summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dissector_80211.c7
-rw-r--r--dissector_eth.c7
-rw-r--r--dissector_sll.c6
-rw-r--r--flowtop/Makefile1
-rw-r--r--lookup.c6
-rw-r--r--lookup.h7
-rw-r--r--netsniff-ng/Makefile1
-rw-r--r--oui.c118
-rw-r--r--oui.h13
-rw-r--r--proto_80211_mac_hdr.c2
-rw-r--r--proto_ethernet.c1
-rw-r--r--proto_lldp.c2
12 files changed, 23 insertions, 148 deletions
diff --git a/dissector_80211.c b/dissector_80211.c
index 28f5526..ecaf355 100644
--- a/dissector_80211.c
+++ b/dissector_80211.c
@@ -10,8 +10,7 @@
#include "protos.h"
#include "dissector.h"
#include "dissector_80211.h"
-#include "xmalloc.h"
-#include "oui.h"
+#include "lookup.h"
struct hash_table ieee80211_lay2;
@@ -37,11 +36,11 @@ void dissector_init_ieee80211(int fnttype)
dissector_init_entry(fnttype);
dissector_init_layer_2(fnttype);
dissector_init_exit(fnttype);
- dissector_init_oui();
+ lookup_init(LT_OUI);
}
void dissector_cleanup_ieee80211(void)
{
free_hash(&ieee80211_lay2);
- dissector_cleanup_oui();
+ lookup_cleanup(LT_OUI);
}
diff --git a/dissector_eth.c b/dissector_eth.c
index b2c44df..7041aac 100644
--- a/dissector_eth.c
+++ b/dissector_eth.c
@@ -7,7 +7,6 @@
#include <stdint.h>
#include "hash.h"
-#include "oui.h"
#include "proto.h"
#include "protos.h"
#include "dissector.h"
@@ -68,11 +67,10 @@ void dissector_init_ethernet(int fnttype)
dissector_init_layer_3(fnttype);
dissector_init_exit(fnttype);
- dissector_init_oui();
-
lookup_init(LT_PORTS_UDP);
lookup_init(LT_PORTS_TCP);
lookup_init(LT_ETHERTYPES);
+ lookup_init(LT_OUI);
}
void dissector_cleanup_ethernet(void)
@@ -80,9 +78,8 @@ void dissector_cleanup_ethernet(void)
free_hash(&eth_lay2);
free_hash(&eth_lay3);
+ lookup_cleanup(LT_OUI);
lookup_cleanup(LT_ETHERTYPES);
lookup_cleanup(LT_PORTS_TCP);
lookup_cleanup(LT_PORTS_UDP);
-
- dissector_cleanup_oui();
}
diff --git a/dissector_sll.c b/dissector_sll.c
index ac8f017..cde0d54 100644
--- a/dissector_sll.c
+++ b/dissector_sll.c
@@ -3,13 +3,13 @@
* Subject to the GPL, version 2.
*/
-#include "oui.h"
#include "protos.h"
#include "pcap_io.h"
#include "pkt_buff.h"
#include "dissector.h"
#include "dissector_sll.h"
#include "dissector_eth.h"
+#include "lookup.h"
static char *pkt_type2str(uint8_t pkttype)
{
@@ -98,10 +98,10 @@ void dissector_init_sll(int fnttype)
{
dissector_set_print_type(&sll_ops, fnttype);
dissector_set_print_type(&none_ops, fnttype);
- dissector_init_oui();
+ lookup_init(LT_OUI);
}
void dissector_cleanup_sll(void)
{
- dissector_cleanup_oui();
+ lookup_cleanup(LT_OUI);
}
diff --git a/flowtop/Makefile b/flowtop/Makefile
index bc7afb5..ddb031c 100644
--- a/flowtop/Makefile
+++ b/flowtop/Makefile
@@ -11,7 +11,6 @@ flowtop-libs += -lGeoIP \
endif
flowtop-objs = xmalloc.o \
- oui.o \
str.o \
sig.o \
sock.o \
diff --git a/lookup.c b/lookup.c
index 30d6da9..a8dfe20 100644
--- a/lookup.c
+++ b/lookup.c
@@ -21,6 +21,7 @@ static const char * const lookup_files[] = {
[LT_PORTS_UDP] = ETCDIRE_STRING "/udp.conf",
[LT_PORTS_TCP] = ETCDIRE_STRING "/tcp.conf",
[LT_ETHERTYPES] = ETCDIRE_STRING "/ether.conf",
+ [LT_OUI] = ETCDIRE_STRING "/oui.conf",
};
struct lookup_entry {
@@ -150,3 +151,8 @@ char *lookup_port_tcp(unsigned int id)
{
return __do_lookup_inline(id, &lookup_tables[LT_PORTS_TCP]);
}
+
+char *lookup_vendor(unsigned int id)
+{
+ return __do_lookup_inline(id, &lookup_tables[LT_OUI]);
+}
diff --git a/lookup.h b/lookup.h
index 50a4d86..57c43d6 100644
--- a/lookup.h
+++ b/lookup.h
@@ -12,6 +12,7 @@ enum lookup_type {
LT_PORTS_UDP,
LT_PORTS_TCP,
LT_ETHERTYPES,
+ LT_OUI,
LT_MAX,
};
@@ -21,5 +22,11 @@ extern void lookup_cleanup(enum lookup_type which);
extern char *lookup_port_udp(unsigned int id);
extern char *lookup_port_tcp(unsigned int id);
extern char *lookup_ether_type(unsigned int id);
+extern char *lookup_vendor(unsigned int id);
+
+static inline const char *lookup_vendor_str(unsigned int id)
+{
+ return lookup_vendor(id) ? : "Unknown";
+}
#endif /* LOOKUP_H */
diff --git a/netsniff-ng/Makefile b/netsniff-ng/Makefile
index 03e306e..6f9d0b2 100644
--- a/netsniff-ng/Makefile
+++ b/netsniff-ng/Makefile
@@ -55,7 +55,6 @@ netsniff-ng-objs = dissector.o \
xmalloc.o \
hash.o \
bpf.o \
- oui.o \
pcap_rw.o \
pcap_sg.o \
pcap_mm.o \
diff --git a/oui.c b/oui.c
deleted file mode 100644
index 94b6ba1..0000000
--- a/oui.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * netsniff-ng - the packet sniffing beast
- * Copyright 2009 - 2013 Daniel Borkmann.
- * Subject to the GPL, version 2.
- */
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#include "hash.h"
-#include "xmalloc.h"
-#include "oui.h"
-#include "str.h"
-
-static struct hash_table oui;
-
-static bool initialized = false;
-
-struct vendor_id {
- unsigned int id;
- char *vendor;
- struct vendor_id *next;
-};
-
-const char *lookup_vendor(unsigned int id)
-{
- struct vendor_id *v;
-
- v = lookup_hash(id, &oui);
- while (v && id != v->id)
- v = v->next;
-
- return (v && id == v->id ? v->vendor : NULL);
-}
-
-void dissector_init_oui(void)
-{
- FILE *fp;
- char buff[128], *ptr, *end;
- struct vendor_id *v;
- void **pos;
-
- if (initialized)
- return;
-
- fp = fopen(ETCDIRE_STRING "/oui.conf", "r");
- if (!fp)
- panic("No oui.conf found!\n");
-
- memset(buff, 0, sizeof(buff));
-
- while (fgets(buff, sizeof(buff), fp) != NULL) {
- buff[sizeof(buff) - 1] = 0;
- ptr = buff;
-
- v = xmalloc(sizeof(*v));
- v->id = strtol(ptr, &end, 0);
- /* not a valid line, skip */
- if (v->id == 0 && end == ptr) {
- xfree(v);
- continue;
- }
-
- ptr = strstr(buff, ", ");
- /* likewise */
- if (!ptr) {
- xfree(v);
- continue;
- }
-
- ptr += strlen(", ");
- ptr = strtrim_right(ptr, '\n');
- ptr = strtrim_right(ptr, ' ');
-
- v->vendor = xstrdup(ptr);
- v->next = NULL;
-
- pos = insert_hash(v->id, v, &oui);
- if (pos) {
- v->next = *pos;
- *pos = v;
- }
-
- memset(buff, 0, sizeof(buff));
- }
-
- fclose(fp);
- initialized = true;
-}
-
-static int dissector_cleanup_oui_hash(void *ptr)
-{
- struct vendor_id *tmp, *v = ptr;
-
- if (!ptr)
- return 0;
-
- while ((tmp = v->next)) {
- xfree(v->vendor);
- xfree(v);
- v = tmp;
- }
-
- xfree(v->vendor);
- xfree(v);
-
- return 0;
-}
-
-void dissector_cleanup_oui(void)
-{
- if (!initialized)
- return;
-
- for_each_hash(&oui, dissector_cleanup_oui_hash);
- free_hash(&oui);
- initialized = false;
-}
diff --git a/oui.h b/oui.h
deleted file mode 100644
index 564e4a1..0000000
--- a/oui.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef OUI_H
-#define OUI_H
-
-extern const char *lookup_vendor(unsigned int id);
-extern void dissector_init_oui(void);
-extern void dissector_cleanup_oui(void);
-
-static inline const char *lookup_vendor_str(unsigned int id)
-{
- return lookup_vendor(id) ? : "Unknown";
-}
-
-#endif /* OUI_H */
diff --git a/proto_80211_mac_hdr.c b/proto_80211_mac_hdr.c
index c7b5b15..14e136d 100644
--- a/proto_80211_mac_hdr.c
+++ b/proto_80211_mac_hdr.c
@@ -21,8 +21,8 @@
#include "dissector_80211.h"
#include "built_in.h"
#include "pkt_buff.h"
-#include "oui.h"
#include "linktype.h"
+#include "lookup.h"
#define TU 0.001024
diff --git a/proto_ethernet.c b/proto_ethernet.c
index a8e10cf..47730fc 100644
--- a/proto_ethernet.c
+++ b/proto_ethernet.c
@@ -14,7 +14,6 @@
#include "dissector_eth.h"
#include "lookup.h"
#include "pkt_buff.h"
-#include "oui.h"
static inline bool is_multicast_ether_addr(const uint8_t *mac)
{
diff --git a/proto_lldp.c b/proto_lldp.c
index 86d6bc8..4f71ec6 100644
--- a/proto_lldp.c
+++ b/proto_lldp.c
@@ -9,7 +9,7 @@
#include <netinet/in.h> /* for ntohs()/ntohl() */
#include "built_in.h"
-#include "oui.h"
+#include "lookup.h"
#include "pkt_buff.h"
#include "proto.h"
#include "protos.h"