File: ipmatch.cc

package info (click to toggle)
crossroads 2.65-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 2,664 kB
  • ctags: 355
  • sloc: cpp: 4,212; perl: 1,658; xml: 269; makefile: 186; sh: 46
file content (17 lines) | stat: -rw-r--r-- 477 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "sys"
#include "../config/config"

bool ipmatch (struct in_addr adr, struct in_addr mask) {
    PROFILE("ipmatch");
    
    long laddr = 0, lmask = 0;
    memcpy (&laddr, &adr,  sizeof(adr));
    memcpy (&lmask, &mask, sizeof(mask));
    bool match = ( (laddr & lmask) == laddr );

    debugmsg ("Matching ip " + (string)inet_ntoa(adr) + " against mask " +
	      (string)inet_ntoa(mask) + ": " +
	      (match ? "match" : "miss") + "\n");
    
    return (match);
}