RumbleFrog

SP ParseCIDR

Aug 13th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 0.55 KB | None | 0 0
  1. stock void ParseCIDR(const char[] sCIDR, int &iStart, int &iEnd)
  2. {
  3.     char Pieces[2][32];
  4.    
  5.     ExplodeString(sCIDR, "/", Pieces, sizeof Pieces, sizeof Pieces[]);
  6.     int baseip = NetAddr2Long(Pieces[0]);
  7.     int prefix = StringToInt(Pieces[1]);
  8.    
  9.     if(prefix == 0) {
  10.         LogError("CIDR prefix 0, clamping to 32. %s", sCIDR);
  11.         prefix = 32;
  12.     }
  13.    
  14.     int shift = 32 - prefix;
  15.     int mask = (1 << shift) - 1;
  16.     int start = baseip >> shift << shift;
  17.     int end = start | mask;
  18.    
  19.     iStart = start;
  20.     iEnd = end;
  21. }
Advertisement