summaryrefslogtreecommitdiffstats
path: root/squark-auth-snmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'squark-auth-snmp.c')
-rw-r--r--squark-auth-snmp.c69
1 files changed, 6 insertions, 63 deletions
diff --git a/squark-auth-snmp.c b/squark-auth-snmp.c
index 4b88913..f386ab3 100644
--- a/squark-auth-snmp.c
+++ b/squark-auth-snmp.c
@@ -22,12 +22,12 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
-#include <arpa/inet.h>
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include "blob.h"
+#include "addr.h"
/* Compile time configurables */
#define SWITCH_HASH_SIZE 128
@@ -167,43 +167,6 @@ static inline void blob_pull_oid_dump(blob_t *b, blob_t d)
/* ----------------------------------------------------------------- */
-typedef union {
- struct sockaddr any;
- struct sockaddr_in ipv4;
-} sockaddr_any;
-
-int addr_len(const sockaddr_any *addr)
-{
- switch (addr->any.sa_family) {
- case AF_INET:
- return sizeof(struct sockaddr_in);
- default:
- return 0;
- }
-}
-
-void addr_copy(sockaddr_any *dst, const sockaddr_any *src)
-{
- memcpy(dst, src, addr_len(src));
-}
-
-int addr_cmp(const sockaddr_any *a, const sockaddr_any *b)
-{
- if (a->any.sa_family != b->any.sa_family)
- return -1;
- return memcmp(a, b, addr_len(a));
-}
-
-sockaddr_any *addr_parse(const char *str, sockaddr_any *addr)
-{
- memset(addr, 0, sizeof(*addr));
- addr->ipv4.sin_family = AF_INET;
- addr->ipv4.sin_addr.s_addr = inet_addr(str);
- if (addr->ipv4.sin_addr.s_addr == -1)
- return NULL;
- return addr;
-}
-
void blob_push_iana_afn(blob_t *b, sockaddr_any *addr)
{
unsigned char *ptr;
@@ -245,26 +208,6 @@ sockaddr_any *blob_pull_iana_afn(blob_t *b, sockaddr_any *addr)
return addr;
}
-unsigned long addr_hash(const sockaddr_any *addr)
-{
- switch (addr->any.sa_family) {
- case AF_INET:
- return htonl(addr->ipv4.sin_addr.s_addr);
- default:
- return 0;
- }
-}
-
-const char *addr_print(const sockaddr_any *addr)
-{
- switch (addr->any.sa_family) {
- case AF_INET:
- return inet_ntoa(addr->ipv4.sin_addr);
- default:
- return "unknown";
- }
-}
-
/* ----------------------------------------------------------------- */
static void safe_free(void *ptr)
@@ -435,10 +378,10 @@ void link_switch(const char *a, int ap, const char *b, int bp)
struct switch_port_info *spia, *spib;
sockaddr_any addr;
- sia = get_switch(addr_parse(a, &addr));
+ sia = get_switch(addr_parse(BLOB_STRLEN(a), &addr));
spia = get_switch_port(sia, ap);
- sib = get_switch(addr_parse(b, &addr));
+ sib = get_switch(addr_parse(BLOB_STRLEN(b), &addr));
spib = get_switch_port(sib, bp);
addr_copy(&spia->link_partner, &sib->addr);
@@ -994,7 +937,7 @@ void start_authentication(const char *token, const char *ip)
auth = calloc(1, sizeof(*auth));
auth->token = strdup(token);
- if (addr_parse(ip, &auth->addr) == NULL) {
+ if (addr_parse(BLOB_STRLEN(ip), &auth->addr) == NULL) {
auth_completed(auth);
return;
}
@@ -1112,9 +1055,9 @@ int main(int argc, char **argv)
if (l2_root == NULL)
l2_root = l3_root;
- l3_root_dev = get_switch(addr_parse(l3_root, &addr));
+ l3_root_dev = get_switch(addr_parse(BLOB_STRLEN(l3_root), &addr));
l3_if_ndx = resolve_ifName2ifIndex(l3_root_dev, BLOB_STRLEN((char *) l3_ifname));
- l2_root_dev = get_switch(addr_parse(l2_root, &addr));
+ l2_root_dev = get_switch(addr_parse(BLOB_STRLEN(l2_root), &addr));
l2_vlan_ndx = atoi(l2_vlan);
username_format_flags = parse_format(username_format);