added locally modified files for broadcast support

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
Daniel Lezcano 2010-05-18 19:13:26 +02:00
parent 1f1b18e754
commit 0093bb8ced
3 changed files with 18 additions and 10 deletions

View File

@ -943,8 +943,8 @@ static int setup_ipv4_addr(struct lxc_list *ip, int ifindex)
inetdev = iterator->elem; inetdev = iterator->elem;
err = lxc_ip_addr_add(AF_INET, ifindex, err = lxc_ipv4_addr_add(ifindex, &inetdev->addr,
&inetdev->addr, inetdev->prefix); &inetdev->bcast, inetdev->prefix);
if (err) { if (err) {
ERROR("failed to setup_ipv4_addr ifindex %d : %s", ERROR("failed to setup_ipv4_addr ifindex %d : %s",
ifindex, strerror(-err)); ifindex, strerror(-err));
@ -965,8 +965,9 @@ static int setup_ipv6_addr(struct lxc_list *ip, int ifindex)
inet6dev = iterator->elem; inet6dev = iterator->elem;
err = lxc_ip_addr_add(AF_INET6, ifindex, err = lxc_ipv6_addr_add(ifindex, &inet6dev->addr,
&inet6dev->addr, inet6dev->prefix); &inet6dev->mcast, &inet6dev->acast,
inet6dev->prefix);
if (err) { if (err) {
ERROR("failed to setup_ipv6_addr ifindex %d : %s", ERROR("failed to setup_ipv6_addr ifindex %d : %s",
ifindex, strerror(-err)); ifindex, strerror(-err));

View File

@ -62,7 +62,7 @@ struct lxc_route {
*/ */
struct lxc_inet6dev { struct lxc_inet6dev {
struct in6_addr addr; struct in6_addr addr;
struct in6_addr bcast; struct in6_addr mcast;
struct in6_addr acast; struct in6_addr acast;
int prefix; int prefix;
}; };

View File

@ -405,16 +405,23 @@ static int config_network_ipv4(const char *key, char *value,
return -1; return -1;
} }
if (bcast) if (bcast && !inet_pton(AF_INET, bcast, &inetdev->bcast)) {
if (!inet_pton(AF_INET, bcast, &inetdev->bcast)) { SYSERROR("invalid ipv4 broadcast address: %s", value);
SYSERROR("invalid ipv4 address: %s", value); return -1;
return -1; }
}
/* no prefix specified, determine it from the network class */ /* no prefix specified, determine it from the network class */
inetdev->prefix = prefix ? atoi(prefix) : inetdev->prefix = prefix ? atoi(prefix) :
config_ip_prefix(&inetdev->addr); config_ip_prefix(&inetdev->addr);
/* if no broadcast address, let compute one from the
* prefix and address
*/
if (!bcast) {
inetdev->bcast.s_addr =
htonl(INADDR_BROADCAST << (32 - inetdev->prefix));
inetdev->bcast.s_addr &= inetdev->addr.s_addr;
}
lxc_list_add(&netdev->ipv4, list); lxc_list_add(&netdev->ipv4, list);