diff -NurpP --minimal linux-3.0.1-vs2.3.1-pre9/include/linux/vs_inet.h linux-3.0.1-vs2.3.1-pre9.2/include/linux/vs_inet.h --- linux-3.0.1-vs2.3.1-pre9/include/linux/vs_inet.h 2011-06-10 22:11:24.000000000 +0200 +++ linux-3.0.1-vs2.3.1-pre9.2/include/linux/vs_inet.h 2011-08-18 17:01:00.000000000 +0200 @@ -253,7 +253,9 @@ int v4_map_sock_addr(struct inet_sock *i } else if (saddr == IPI_LOOPBACK) { if (nx_info_flags(nxi, NXF_LBACK_REMAP, 0)) baddr = nxi->v4_lback.s_addr; - } else { /* normal address bind */ + } else if (!ipv4_is_multicast(saddr) || + !nx_info_ncaps(nxi, NXC_MULTICAST)) { + /* normal address bind */ if (!v4_addr_in_nx_info(nxi, saddr, NXA_MASK_BIND)) return -EADDRNOTAVAIL; } diff -NurpP --minimal linux-3.0.1-vs2.3.1-pre9/include/linux/vserver/network.h linux-3.0.1-vs2.3.1-pre9.2/include/linux/vserver/network.h --- linux-3.0.1-vs2.3.1-pre9/include/linux/vserver/network.h 2011-06-10 22:11:24.000000000 +0200 +++ linux-3.0.1-vs2.3.1-pre9.2/include/linux/vserver/network.h 2011-08-18 16:30:48.000000000 +0200 @@ -48,6 +48,8 @@ static inline uint64_t __nxf_init_set(vo #define NXC_RAW_ICMP 0x00000100 +#define NXC_MULTICAST 0x00001000 + /* address types */