SecBSD's official ports repository
This commit is contained in:
commit
2c0afcbbf3
64331 changed files with 5339189 additions and 0 deletions
131
net/arpwatch/patches/patch-ec_c
Normal file
131
net/arpwatch/patches/patch-ec_c
Normal file
|
@ -0,0 +1,131 @@
|
|||
zero-pad MAC address to match ifconfig(8) output
|
||||
https://sources.debian.org/patches/arpwatch/2.1a15-6/33_bug315215_zero-pad-MAC/
|
||||
|
||||
remove DECnet remnants
|
||||
|
||||
use a red-black tree instead of linked list for searching vendor IDs
|
||||
|
||||
Index: ec.c
|
||||
--- ec.c.orig
|
||||
+++ ec.c
|
||||
@@ -58,20 +58,28 @@ struct rtentry;
|
||||
#include "arpwatch.h"
|
||||
#include "ec.h"
|
||||
#include "util.h"
|
||||
+#include "tree.h"
|
||||
|
||||
/* Basic data structure */
|
||||
-struct ecent {
|
||||
+struct ecnode {
|
||||
+ RB_ENTRY(ecnode) entry;
|
||||
u_int32_t o; /* first 3 octets */
|
||||
char *text; /* associated text */
|
||||
};
|
||||
|
||||
-static struct ecent *list;
|
||||
-static u_int ec_last = 0;
|
||||
-static u_int ec_len = 0;
|
||||
-
|
||||
/* Forwards */
|
||||
-static int ec_a2o(char *, u_int32_t *);
|
||||
+int ocmp(struct ecnode *, struct ecnode *);
|
||||
|
||||
+/* Compare two ecnode addresses */
|
||||
+int
|
||||
+ocmp(struct ecnode *e1, struct ecnode *e2)
|
||||
+{
|
||||
+ return (e1->o < e2->o ? -1 : e1->o > e2->o);
|
||||
+}
|
||||
+
|
||||
+RB_HEAD(ectree, ecnode) head = RB_INITIALIZER(&head);
|
||||
+RB_GENERATE(ectree, ecnode, entry, ocmp);
|
||||
+
|
||||
/* Convert an 3 octets from an ethernet address to a u_int32_t */
|
||||
static int
|
||||
ec_a2o(register char *cp, register u_int32_t *op)
|
||||
@@ -91,23 +99,18 @@ ec_a2o(register char *cp, register u_int32_t *op)
|
||||
int
|
||||
ec_add(register u_int32_t o, register char *text)
|
||||
{
|
||||
+ struct ecnode *n;
|
||||
|
||||
- if (ec_last >= ec_len) {
|
||||
- if (list == NULL) {
|
||||
- ec_len = 512;
|
||||
- list = malloc(ec_len * sizeof(*list));
|
||||
- } else {
|
||||
- ec_len *= 2;
|
||||
- list = realloc(list, ec_len * sizeof(*list));
|
||||
- }
|
||||
- if (list == NULL) {
|
||||
- syslog(LOG_ERR, "ec_add(): malloc: %m");
|
||||
- exit(1);
|
||||
- }
|
||||
+ if ((n = malloc(sizeof(struct ecnode))) == NULL) {
|
||||
+ syslog(LOG_ERR, "%s: malloc\n", __func__);
|
||||
+ return (0);
|
||||
}
|
||||
- list[ec_last].o = o;
|
||||
- list[ec_last].text = savestr(text);
|
||||
- ++ec_last;
|
||||
+
|
||||
+ n->o = o;
|
||||
+ n->text = savestr(text);
|
||||
+
|
||||
+ RB_INSERT(ectree, &head, n);
|
||||
+
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -115,16 +118,16 @@ ec_add(register u_int32_t o, register char *text)
|
||||
char *
|
||||
ec_find(register u_char *e)
|
||||
{
|
||||
- u_int32_t o;
|
||||
- register int i;
|
||||
+ struct ecnode find, *res;
|
||||
+ u_int32_t o = 0;
|
||||
|
||||
- o = 0;
|
||||
BCOPY(e, &o, 3);
|
||||
- for (i = 0; i < ec_last; ++i)
|
||||
- if (list[i].o == o)
|
||||
- return (list[i].text);
|
||||
-
|
||||
- return (NULL);
|
||||
+ find.o = o;
|
||||
+ res = RB_FIND(ectree, &head, &find);
|
||||
+ if (res == NULL)
|
||||
+ return (NULL);
|
||||
+ else
|
||||
+ return res->text;
|
||||
}
|
||||
|
||||
/* Loop through the ethernet code database */
|
||||
@@ -182,17 +185,6 @@ ec_loop(register FILE *f, ec_process fn, register cons
|
||||
return (1);
|
||||
}
|
||||
|
||||
-/* DECnet local logical address prefix */
|
||||
-static u_char decnet[3] = { 0xaa, 0x0, 0x4 };
|
||||
-
|
||||
-/* Returns true if an ethernet address is decnet, else false */
|
||||
-int
|
||||
-isdecnet(register u_char *e)
|
||||
-{
|
||||
-
|
||||
- return (MEMCMP(e, decnet, sizeof(decnet)) == 0);
|
||||
-}
|
||||
-
|
||||
/* Convert an ascii ethernet string to ethernet address */
|
||||
int
|
||||
str2e(register char *str, register u_char *e)
|
||||
@@ -218,7 +210,7 @@ e2str(register u_char *e)
|
||||
{
|
||||
static char str[32];
|
||||
|
||||
- (void)sprintf(str, "%x:%x:%x:%x:%x:%x",
|
||||
+ (void)sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
|
||||
e[0], e[1], e[2], e[3], e[4], e[5]);
|
||||
return (str);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue