summaryrefslogtreecommitdiff
path: root/src/lib/libc/net/net_addrcmp.c
diff options
context:
space:
mode:
authorderaadt <>1999-06-23 22:17:32 +0000
committerderaadt <>1999-06-23 22:17:32 +0000
commit8deb91d95656ce00b75b7bbf5b424aa7b9d7faff (patch)
tree807986cb72df5ab5337c624d1911a9b071978c34 /src/lib/libc/net/net_addrcmp.c
parentc9acd185820380c6eedba713cb86eaf97af03d53 (diff)
downloadopenbsd-8deb91d95656ce00b75b7bbf5b424aa7b9d7faff.tar.gz
openbsd-8deb91d95656ce00b75b7bbf5b424aa7b9d7faff.tar.bz2
openbsd-8deb91d95656ce00b75b7bbf5b424aa7b9d7faff.zip
net_addrcmp(); needs man page
Diffstat (limited to 'src/lib/libc/net/net_addrcmp.c')
-rw-r--r--src/lib/libc/net/net_addrcmp.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/lib/libc/net/net_addrcmp.c b/src/lib/libc/net/net_addrcmp.c
new file mode 100644
index 0000000000..003b2567e9
--- /dev/null
+++ b/src/lib/libc/net/net_addrcmp.c
@@ -0,0 +1,37 @@
1#include <sys/types.h>
2#include <sys/socket.h>
3#include <sys/un.h>
4#include <netinet/in.h>
5#include <netns/ns.h>
6#include <string.h>
7
8int
9net_addrcmp(sa1, sa2)
10 struct sockaddr *sa1;
11 struct sockaddr *sa2;
12{
13 if (sa1->sa_len != sa2->sa_len)
14 return (sa1->sa_len < sa2->sa_len) ? -1 : 1;
15 if (sa1->sa_family != sa2->sa_family)
16 return (sa1->sa_family < sa2->sa_family) ? -1 : 1;
17
18 switch(sa1->sa_family) {
19 case AF_INET:
20 return (memcmp(&((struct sockaddr_in *)sa1)->sin_addr,
21 &((struct sockaddr_in *)sa2)->sin_addr,
22 sizeof(struct in_addr)));
23 case AF_INET6:
24 return (memcmp(&((struct sockaddr_in6 *)sa1)->sin6_addr,
25 &((struct sockaddr_in6 *)sa2)->sin6_addr,
26 sizeof(struct in6_addr)));
27 case AF_NS:
28 return (memcmp(&((struct sockaddr_ns *)sa1)->sns_addr,
29 &((struct sockaddr_ns *)sa2)->sns_addr,
30 sizeof(struct ns_addr)));
31 case AF_UNIX:
32 return (strcmp(((struct sockaddr_un *)sa1)->sun_path,
33 ((struct sockaddr_un *)sa1)->sun_path));
34 default:
35 return -1;
36 }
37}