From 786d0bb9e7c5db5104e3fd0ff7fdfbd1e19844ea Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 10 Jul 1998 08:38:29 +0000 Subject: Added ipa_class_mask() which guesses netmask for classful addressing. For pure A/B/C class addresses it just returns the class netmask, for subnets it tries to guess subnet mask. Please make sure the address you pass to this function is really a valid host address (i.e., call ipa_validate() first). --- lib/ipv4.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'lib/ipv4.c') diff --git a/lib/ipv4.c b/lib/ipv4.c index 9aa79c26..5ec2ffb8 100644 --- a/lib/ipv4.c +++ b/lib/ipv4.c @@ -43,11 +43,26 @@ ip_ntop(ip_addr a, char *b) (x & 0xff)); } - char * ip_ntox(ip_addr a, char *b) { return b + bsprintf(b, "%08x", _I(a)); } +u32 +ipv4_class_mask(u32 a) +{ + u32 m; + + if (a < 0x80000000) + m = 0xff000000; + if (a < 0xc0000000) + m = 0xffff0000; + else + m = 0xffffff00; + while (a & ~m) + m |= m >> 1; + return m; +} + #endif -- cgit v1.2.3