]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Added ipa_xor() and ipa_in_net().
authorMartin Mares <mj@ucw.cz>
Mon, 1 Jun 1998 21:36:58 +0000 (21:36 +0000)
committerMartin Mares <mj@ucw.cz>
Mon, 1 Jun 1998 21:36:58 +0000 (21:36 +0000)
lib/ip.h
lib/ipv4.h
lib/ipv6.h

index 87cd3aa9324f35a4d3eae9788589ebceefde6975..5bf56fc33f02065c0e807bfb271fb645194c6b74 100644 (file)
--- a/lib/ip.h
+++ b/lib/ip.h
@@ -15,6 +15,8 @@
 #include "ipv6.h"
 #endif
 
+#define ipa_in_net(x,n,p) (!ipa_nonzero(ipa_and(ipa_xor((n),(x)),ipa_mkmask(p))))
+
 /*
  *     ip_classify() returns either a negative number for invalid addresses
  *     or scope OR'ed together with address type.
index add406b0dea40f517d0107ec4805c0fff1d6a04f..af2194ca71d686c08922777338616a0f92e6e836 100644 (file)
@@ -44,6 +44,7 @@ typedef u32 ip_addr;
 #define ipa_nonzero(x) _I(x)
 #define ipa_and(x,y) _MI(_I(x) & _I(y))
 #define ipa_or(x,y) _MI(_I(x) | _I(y))
+#define ipa_xor(x,y) _MI(_I(x) ^ _I(y))
 #define ipa_not(x) _MI(~_I(x))
 #define ipa_mkmask(x) _MI(u32_mkmask(x))
 #define ipa_mklen(x) u32_masklen(_I(x))
index 08ed5f8816769fef2b0d4a6b9adf0cce4f6680e2..3f775d4c12e441887bc54f6bd462d724a705a1b7 100644 (file)
@@ -36,6 +36,10 @@ typedef struct ipv4_addr {
                        _I1(a) | _I1(b), \
                        _I2(a) | _I2(b), \
                        _I3(a) | _I3(b))
+#define ipa_xor(a,b) _MI(_I0(a) ^ _I0(b), \
+                        _I1(a) ^ _I1(b), \
+                        _I2(a) ^ _I2(b), \
+                        _I3(a) ^ _I3(b))
 #define ipa_not(a) _MI(~_I0(a),~_I1(a),~_I2(a),~_I3(a))
 #define ipa_mkmask(x) ipv6_mkmask(x)
 #define ipa_mklen(x) ipv6_mklen(&(x))