69 if (node->
val && strcmp(node->
val,
"eve-log") == 0) {
72 const char *ethernet =
76 "macset",
sizeof(
void *), NULL, (
void (*)(
void *))
MacSetFree);
98 SCLogError(
"Unable to allocate MacSet memory");
118 static inline void MacUpdateEntry(
121 switch (ms->
state[side]) {
130 if (ms->
buf[side] == NULL) {
144 memcpy(ms->
buf[side] + 1, addr,
sizeof(
MacAddr));
158 if (ms->
last[side] > 0) {
163 for (
int i = ms->
last[side] - 1; i >= 0; i--) {
164 uint8_t *addr2 = (uint8_t *)((ms->
buf[side]) + i);
195 static inline int MacSetIterateSide(
199 switch (ms->
state[side]) {
203 ret = IterFunc((uint8_t *)ms->
singles[side], side, data);
209 for (
int i = 0; i < ms->
last[side]; i++) {
210 ret = IterFunc((uint8_t *)ms->
buf[side][i], side, data);
226 ret = MacSetIterateSide(ms, IterFunc,
MAC_SET_SRC, data);
230 return MacSetIterateSide(ms, IterFunc,
MAC_SET_DST, data);
235 switch (ms->
state[side]) {
239 return (uint8_t *)ms->
singles[side];
241 return (uint8_t *)ms->
buf[side][0];
279 size_t total_free = 0;
291 total_free +=
sizeof(*ms);
307 ms->
state[1] = tmp_state;
311 ms->
buf[1] = tmp_buf;
313 int tmp_last = ms->
last[0];
315 ms->
last[1] = tmp_last;
320 static int CheckTest1Membership(uint8_t *addr,
MacSetSide side,
void *data)
322 int *i = (
int *)data;
341 static int MacSetTest01(
void)
345 MacAddr addr1 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 }, addr2 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x2 },
346 addr3 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x3 };
373 static int MacSetTest02(
void)
383 for (i = 1; i < 100; i++) {
384 MacAddr addr1 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 }, addr2 = { 0x1, 0x0, 0x0, 0x0, 0x0, 0x2 };
396 static int MacSetTest03(
void)
405 for (uint8_t i = 1; i < 100; i++) {
406 MacAddr addr1 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 }, addr2 = { 0x1, 0x0, 0x0, 0x0, 0x0, 0x1 };
417 static int MacSetTest04(
void)
428 static int MacSetTest05(
void)
438 for (uint8_t i = 1; i < 100; i++) {
439 MacAddr addr1 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 }, addr2 = { 0x1, 0x0, 0x0, 0x0, 0x0, 0x1 };
454 static int MacSetTest06(
void)
465 MacAddr addr1 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x1 }, addr2 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x2 },
466 addr3 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x3 }, addr4 = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x4 };