along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: netutl.c,v 1.12.4.36 2002/06/05 00:25:54 guus Exp $
+ $Id: netutl.c,v 1.12.4.39 2002/06/08 13:46:43 guus Exp $
*/
#include "config.h"
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
-#ifndef HAVE_NETBSD
- #include <stdint.h>
+#ifdef HAVE_INTTYPES_H
+ #include <inttypes.h>
#endif
#include <string.h>
#include <signal.h>
exit(0);
}
-#ifdef HAVE_LINUX
if((scopeid = strchr(address, '%')))
*scopeid = '\0'; /* Descope. */
-#endif
*addrstr = xstrdup(address);
*portstr = xstrdup(port);
/* Subnet mask handling */
-int maskcmp(char *a, char *b, int masklen, int len)
+int maskcmp(void *va, void *vb, int masklen, int len)
{
int i, m, result;
+ char *a = va;
+ char *b = vb;
cp
for(m = masklen, i = 0; m >= 8; m -= 8, i++)
if((result = a[i] - b[i]))
return 0;
}
-void mask(char *a, int masklen, int len)
+void mask(void *va, int masklen, int len)
{
int i;
+ char *a = va;
cp
i = masklen / 8;
masklen %= 8;
a[i] = 0;
}
-void maskcpy(char *a, char *b, int masklen, int len)
+void maskcpy(void *va, void *vb, int masklen, int len)
{
int i, m;
+ char *a = va;
+ char *b = vb;
cp
for(m = masklen, i = 0; m >= 8; m -= 8, i++)
a[i] = b[i];
a[i] = 0;
}
-int maskcheck(char *a, int masklen, int len)
+int maskcheck(void *va, int masklen, int len)
{
int i;
+ char *a = va;
cp
i = masklen / 8;
masklen %= 8;
-
- if(masklen)
- if(a[i++] & (char)~(0x100 - (1 << masklen)))
- return -1;
-
+
+ if(a[i++] & (0xff >> masklen))
+ return -1;
+
for(; i < len; i++)
if(a[i] != 0)
- return -1;
+ return -2;
return 0;
}