aboutsummaryrefslogtreecommitdiffstats
path: root/src/ipcalc.c
diff options
context:
space:
mode:
authorColin Guthrie <colin@mageia.org>2013-10-17 19:56:43 +0100
committerColin Guthrie <colin@mageia.org>2013-10-18 09:35:39 +0100
commit9cec39ee7ef6a745c3a9b19d1ba6e89b09da43c3 (patch)
tree3a122662900195e7b14067a03cd5124358db9daf /src/ipcalc.c
parent423b437e3d29673dfad4051515506e6d711d20e6 (diff)
parent8f5a82934f801ec94847fc899d235a39df9967a7 (diff)
downloadinitscripts-user/colin/update-to-9-50.tar
initscripts-user/colin/update-to-9-50.tar.gz
initscripts-user/colin/update-to-9-50.tar.bz2
initscripts-user/colin/update-to-9-50.tar.xz
initscripts-user/colin/update-to-9-50.zip
Merge tag 'initscripts-9.50-1' into distro/mgauser/colin/update-to-9-50
Tag as initscripts-9.50-1 Conflicts: Makefile lang.csh lang.sh po/Makefile rc.d/init.d/network service sysconfig.txt sysconfig/init sysconfig/network-scripts/ifup sysconfig/network-scripts/ifup-eth sysconfig/network-scripts/ifup-ippp sysconfig/network-scripts/network-functions sysctl.conf systemd/fedora-storage-init
Diffstat (limited to 'src/ipcalc.c')
-rw-r--r--src/ipcalc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/ipcalc.c b/src/ipcalc.c
index 7316f058..bec14eb5 100644
--- a/src/ipcalc.c
+++ b/src/ipcalc.c
@@ -141,7 +141,12 @@ struct in_addr calc_broadcast(struct in_addr addr, int prefix)
struct in_addr broadcast;
memset(&broadcast, 0, sizeof(broadcast));
- broadcast.s_addr = (addr.s_addr & mask.s_addr) | ~mask.s_addr;
+
+/* if prefix is set to 31 return 255.255.255.255 (RFC3021) */
+ if (mask.s_addr == htonl(0xFFFFFFFE))
+ broadcast.s_addr = htonl(0xFFFFFFFF);
+ else
+ broadcast.s_addr = (addr.s_addr & mask.s_addr) | ~mask.s_addr;
return broadcast;
}