diff options
| author | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2014-12-05 00:34:53 +0000 |
|---|---|---|
| committer | Anton <anton@picapica> | 2014-12-05 04:35:38 +0400 |
| commit | 540e7dc57888fcdac1e15c5cf971b3d62a8d7307 (patch) | |
| tree | 20ab1785379e6f35f29a0d82953006265fe8c0dc /PICA_nodeaddrlist.c | |
| parent | 618cd7077bd8266bf3dfd26ddb752ab471af0d74 (diff) | |
| download | pica-pica-540e7dc57888fcdac1e15c5cf971b3d62a8d7307.tar.gz pica-pica-540e7dc57888fcdac1e15c5cf971b3d62a8d7307.zip | |
new config option for node - disable_reserved_addrs
git-svn-id: svn://localhost/project_picapica/trunk@337 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'PICA_nodeaddrlist.c')
| -rwxr-xr-x | PICA_nodeaddrlist.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/PICA_nodeaddrlist.c b/PICA_nodeaddrlist.c index df91230..6e262f9 100755 --- a/PICA_nodeaddrlist.c +++ b/PICA_nodeaddrlist.c @@ -6,12 +6,37 @@ #include "PICA_log.h" +#define PREFIX4 htonl(0xf0000000U) +#define PREFIX8 htonl(0xff000000U) +#define PREFIX12 htonl(0xfff00000U) +#define PREFIX16 htonl(0xffff0000U) +#define PREFIX24 htonl(0xffffff00U) + +#define MAKEIP(a, b, c, d) (htonl( (a&0xFF) << 24 | (b&0xFF) << 16 | (c&0xFF) << 8 | (d&0xFF) )) + struct cb_param { struct PICA_nodeaddr **n_addr; int *N; }; +int PICA_is_reserved_addr_ipv4(in_addr_t addr) +{ + if ((addr & PREFIX8) == 0 //0.0.0.0/8 + || (addr & PREFIX8) == MAKEIP(10, 0, 0, 0) //10.0.0.0/8 + || (addr & PREFIX8) == MAKEIP(127, 0, 0, 0)//127.0.0.0/8 + || (addr & PREFIX16) == MAKEIP(169, 254, 0, 0) //169.254.0.0/16 + || (addr & PREFIX12) == MAKEIP(172, 16, 0, 0) //172.16.0.0/12 + || (addr & PREFIX16) == MAKEIP(192, 168, 0, 0) //192.168.0.0/16 + || (addr & PREFIX4) == MAKEIP(224, 0, 0, 0) //224.0.0.0/4 + || (addr & PREFIX4) == MAKEIP(240, 0, 0, 0) //240.0.0.0/4 + || addr == INADDR_BROADCAST + ) + return 1; + +return 0; +} + static int nodeaddr_load_sqlite_cb(void *p, int argc, char **argv, char **ColName) { struct cb_param *cp = (struct cb_param*)p; |
