summaryrefslogtreecommitdiffstats
path: root/ulogd/extensions
diff options
context:
space:
mode:
authorlaforge <laforge>2000-08-02 12:15:44 +0000
committerlaforge <laforge>2000-08-02 12:15:44 +0000
commit5be5c62b23768d36b632c825d7459c9cdf575afa (patch)
tree06ab20ea8607bd6d2da2b5b300807f261ae50ad3 /ulogd/extensions
parentb7e75a6deea1ecd0cfe306815f83985b4f39e38b (diff)
first usable revision
Diffstat (limited to 'ulogd/extensions')
-rw-r--r--ulogd/extensions/ulogd_BASE.c104
1 files changed, 31 insertions, 73 deletions
diff --git a/ulogd/extensions/ulogd_BASE.c b/ulogd/extensions/ulogd_BASE.c
index 6c9876e..8506d42 100644
--- a/ulogd/extensions/ulogd_BASE.c
+++ b/ulogd/extensions/ulogd_BASE.c
@@ -1,11 +1,11 @@
-/* ulogd_MAC.c, Version $Revision$
+/* ulogd_MAC.c, Version $Revision: 1.1 $
*
* ulogd logging interpreter for MAC addresses, TIME, etc.
*
* (C) 2000 by Harald Welte <laforge@sunbeam.franken.de>
* This software is released under the terms of GNU GPL
*
- * $Id$
+ * $Id: ulogd_BASE.c,v 1.1 2000/08/02 08:51:15 laforge Exp laforge $
*
*/
@@ -17,13 +17,6 @@
#include <linux/tcp.h>
#include <linux/icmp.h>
-#define NIPQUAD(addr) \
- ((unsigned char *)&addr)[0], \
- ((unsigned char *)&addr)[1], \
- ((unsigned char *)&addr)[2], \
- ((unsigned char *)&addr)[3]
-
-
ulog_iret_t *_interp_mac(ulog_packet_msg_t *pkt)
{
unsigned char *p;
@@ -40,7 +33,7 @@ ulog_iret_t *_interp_mac(ulog_packet_msg_t *pkt)
for (i = 0; i < pkt->mac_len; i++, p++)
sprintf(buf, "%s%02x%c", buf, *p, i==pkt->mac_len-1 ? ' ':':');
ret = alloc_ret(ULOGD_RET_STRING,"raw.mac.addr");
- ret->value = buf;
+ ret->value.ptr = buf;
return ret;
}
@@ -50,19 +43,14 @@ ulog_iret_t *_interp_mac(ulog_packet_msg_t *pkt)
ulog_iret_t *_interp_time(ulog_packet_msg_t *pkt)
{
ulog_iret_t *ret, *ret2;
- unsigned long *ptr;
- ret = alloc_ret(ULOGD_RET_UINT64, "oob.time.sec");
- ret2 = alloc_ret(ULOGD_RET_UINT64, "oob.time.usec");
+ ret = alloc_ret(ULOGD_RET_UINT32, "oob.time.sec");
+ ret2 = alloc_ret(ULOGD_RET_UINT32, "oob.time.usec");
- ptr = (unsigned long *) malloc(sizeof(unsigned long));
- *ptr = pkt->timestamp_sec;
- ret->value = ptr;
+ ret->value.ui32 = pkt->timestamp_sec;
ret->next = ret2;
- ptr = (unsigned long *) malloc (sizeof(unsigned long));
- *ptr = pkt->timestamp_usec;
- ret2->value = ptr;
+ ret2->value.ui32 = pkt->timestamp_usec;
return ret;
}
@@ -72,8 +60,8 @@ ulog_iret_t *_interp_prefix(ulog_packet_msg_t *pkt)
ulog_iret_t *ret;
ret = alloc_ret(ULOGD_RET_STRING, "oob.prefix");
- ret->value = malloc(sizeof(pkt->prefix));
- strcpy(ret->value, pkt->prefix);
+ ret->value.ptr = malloc(sizeof(pkt->prefix));
+ strcpy(ret->value.ptr, pkt->prefix);
return ret;
}
@@ -81,12 +69,9 @@ ulog_iret_t *_interp_prefix(ulog_packet_msg_t *pkt)
ulog_iret_t *_interp_mark(ulog_packet_msg_t *pkt)
{
ulog_iret_t *ret;
- u_int32_t *mk;
ret = alloc_ret(ULOGD_RET_UINT32, "oob.mark");
- mk = (u_int32_t *) malloc(sizeof(u_int32_t));
- *mk = pkt->mark;
- ret->value = mk;
+ ret->value.ui32 = pkt->mark;
return ret;
}
@@ -95,44 +80,27 @@ ulog_iret_t *_interp_iphdr(ulog_packet_msg_t *pkt)
{
ulog_iret_t *ret, *ret2;
struct iphdr *iph = (struct iphdr *) pkt->payload;
- u_int32_t *ip;
- u_int8_t *ui8;
- u_int16_t *ui16;
ret = alloc_ret(ULOGD_RET_IPADDR, "ip.hdr.saddr");
- ip = malloc(sizeof(u_int32_t));
- *ip = iph->saddr;
- ret->value = ip;
+ ret->value.ui32 = ntohl(iph->saddr);
ret->next = ret2 = alloc_ret(ULOGD_RET_IPADDR, "ip.hdr.daddr");
- ip = malloc(sizeof(u_int32_t));
- *ip = iph->daddr;
- ret2->value = ip;
+ ret2->value.ui32 = ntohl(iph->daddr);
ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT8, "ip.hdr.protocol");
- ui8 = malloc(sizeof(u_int8_t));
- *ui8 = iph->protocol;
- ret2->value = ui8;
+ ret2->value.ui8 = iph->protocol;
ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT8, "ip.hdr.tos");
- ui8 = malloc(sizeof(u_int8_t));
- *ui8 = ntohs(iph->tos);
- ret2->value = ui8;
+ ret2->value.ui8 = ntohs(iph->tos);
ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT8, "ip.hdr.ttl");
- ui8 = malloc(sizeof(u_int8_t));
- *ui8 = iph->ttl;
- ret2->value = ui8;
+ ret2->value.ui8 = iph->ttl;
ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT16, "ip.hdr.tot_len");
- ui16 = malloc(sizeof(u_int16_t));
- *ui16 = ntohs(iph->tot_len);
- ret2->value = ui16;
+ ret2->value.ui16 = ntohs(iph->tot_len);
ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT8, "ip.hdr.ihl");
- ui8 = malloc(sizeof(u_int8_t));
- *ui8 = iph->ihl;
- ret2->value = ui8;
+ ret2->value.ui8 = iph->ihl;
return ret;
}
@@ -142,32 +110,21 @@ ulog_iret_t *_interp_tcphdr(ulog_packet_msg_t *pkt)
struct iphdr *iph = (struct iphdr *) pkt->payload;
struct tcphdr *tcph = (struct tcphdr *) (iph + iph->ihl);
ulog_iret_t *ret, *ret2;
- u_int16_t *ui16;
- u_int32_t *ui32;
if (iph->protocol != IPPROTO_TCP)
return NULL;
ret = alloc_ret(ULOGD_RET_UINT16, "tcp.hdr.sport");
- ui16 = malloc(sizeof(u_int16_t));
- *ui16 = ntohs(tcph->source);
- ret->value = ui16;
+ ret->value.ui16 = ntohs(tcph->source);
ret->next = ret2 = alloc_ret(ULOGD_RET_UINT16, "tcp.hdr.sport");
- ui16 = malloc(sizeof(u_int16_t));
- *ui16 = ntohs(tcph->dest);
- ret2->value = ui16;
+ ret->value.ui16 = ntohs(tcph->dest);
ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT32, "tcp.hdr.seq");
- ui32 = malloc(sizeof(u_int32_t));
- *ui32 = ntohl(tcph->seq);
- ret2->value = ui32;
-
- ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT32, "tcp.hdr.ack_seq");
- ui32 = malloc(sizeof(u_int32_t));
- *ui32 = ntohl(tcph->ack_seq);
- ret2->value = ui32;
+ ret->value.ui32 = ntohl(tcph->seq);
+ ret2 = ret2->next = alloc_ret(ULOGD_RET_UINT32, "tcp.hdr.ack_seq");
+ ret->value.ui32 = ntohl(tcph->ack_seq);
return ret;
}
@@ -177,20 +134,18 @@ ulog_iret_t *_interp_icmp(ulog_packet_msg_t *pkt)
struct iphdr *iph = (struct iphdr *) pkt->payload;
struct icmphdr *icmph = (struct icmphdr *) (iph + iph->ihl);
ulog_iret_t *ret, *ret2;
- u_int8_t *ui8;
if (iph->protocol != IPPROTO_ICMP)
return NULL;
ret = alloc_ret(ULOGD_RET_UINT8, "icmp.hdr.type");
- ui8 = malloc(sizeof(u_int8_t));
- *ui8 = icmph->type;
- ret->value = ui8;
+ ret->value.ui8 = icmph->type;
return ret;
}
+
static ulog_interpreter_t base_ip[] = {
{ NULL, "raw.mac", &_interp_mac },
@@ -202,15 +157,18 @@ static ulog_interpreter_t base_ip[] = {
{ NULL, "icmp.hdr", &_interp_icmp },
{ NULL, "", NULL },
};
-
-void _init(void)
+void _base_reg_ip(void)
{
ulog_interpreter_t *ip = base_ip;
ulog_interpreter_t *p;
for (p = ip; p->interp; p++)
- {
register_interpreter(p);
- }
}
+
+
+void _init(void)
+{
+ _base_reg_ip();
+}