From: Daniel Hokka Zakrisson Date: Fri, 10 Aug 2007 15:28:42 +0000 (+0000) Subject: Fix setting the broadcast address. X-Git-Tag: release-0.30.214~21 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0750bce7e939150b2f3df5e2a26698d18c3f09f0;p=util-vserver.git Fix setting the broadcast address. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2584 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/lib/syscall_netadd-net.hc b/lib/syscall_netadd-net.hc index 6238f41..e7e7105 100644 --- a/lib/syscall_netadd-net.hc +++ b/lib/syscall_netadd-net.hc @@ -26,10 +26,17 @@ vc_net_add_net(nid_t nid, struct vc_net_addr const *info) struct vcmd_net_addr_v0 k_info; size_t i; - k_info.type = info->vna_type & (VC_NXA_TYPE_IPV4|VC_NXA_TYPE_IPV6); + k_info.type = info->vna_type & (VC_NXA_TYPE_IPV4|VC_NXA_TYPE_IPV6|VC_NXA_MOD_BCAST); k_info.count = 1; - switch (info->vna_type & ~VC_NXA_TYPE_ADDR) { + + if ((k_info.type | VC_NXA_TYPE_ADDR) != info->vna_type) { + errno = EINVAL; + return -1; + } + + switch (k_info.type) { case VC_NXA_TYPE_IPV4: + case VC_NXA_TYPE_IPV4 | VC_NXA_MOD_BCAST: k_info.ip[0].s_addr = info->vna_v4_ip.s_addr; k_info.mask[0].s_addr = info->vna_v4_mask.s_addr; break; @@ -38,9 +45,6 @@ vc_net_add_net(nid_t nid, struct vc_net_addr const *info) k_info.ip[i].s_addr = info->vna_v6_ip.s6_addr32[i]; k_info.mask[0].s_addr = info->vna_prefix; break; - default: - errno = EINVAL; - return -1; } return vserver(VCMD_net_add_v0, NID_USER2KERNEL(nid), &k_info); diff --git a/src/naddress.c b/src/naddress.c index e890396..f413e49 100644 --- a/src/naddress.c +++ b/src/naddress.c @@ -347,7 +347,7 @@ readBcast(char const *str, struct vc_ips **ips) } } (*ips)->a.vna_v4_ip.s_addr = bcast; - (*ips)->a.vna_type = VC_NXA_TYPE_IPV4 | VC_NXA_MOD_BCAST; + (*ips)->a.vna_type = VC_NXA_TYPE_IPV4 | VC_NXA_MOD_BCAST | VC_NXA_TYPE_ADDR; (*ips)->next = calloc(1, sizeof(struct vc_ips)); *ips = (*ips)->next; }