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

View File

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

View File

@ -405,9 +405,8 @@ static int config_network_ipv4(const char *key, char *value,
return -1;
}
if (bcast)
if (!inet_pton(AF_INET, bcast, &inetdev->bcast)) {
SYSERROR("invalid ipv4 address: %s", value);
if (bcast && !inet_pton(AF_INET, bcast, &inetdev->bcast)) {
SYSERROR("invalid ipv4 broadcast address: %s", value);
return -1;
}
@ -415,6 +414,14 @@ static int config_network_ipv4(const char *key, char *value,
inetdev->prefix = prefix ? atoi(prefix) :
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);