Commit 0093bb8c by Daniel Lezcano

added locally modified files for broadcast support

parent 1f1b18e7
......@@ -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));
......
......@@ -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;
};
......
......@@ -405,16 +405,23 @@ 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);
return -1;
}
if (bcast && !inet_pton(AF_INET, bcast, &inetdev->bcast)) {
SYSERROR("invalid ipv4 broadcast address: %s", value);
return -1;
}
/* no prefix specified, determine it from the network class */
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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment