From e6f208b1724fdddf43fbbf9c40427c246d528a14 Mon Sep 17 00:00:00 2001 From: laforge Date: Wed, 2 Aug 2000 12:15:44 +0000 Subject: first usable revision --- extensions/ulogd_BASE.c | 104 +++++++++++++++--------------------------------- 1 file changed, 31 insertions(+), 73 deletions(-) (limited to 'extensions') diff --git a/extensions/ulogd_BASE.c b/extensions/ulogd_BASE.c index 6c9876e..8506d42 100644 --- a/extensions/ulogd_BASE.c +++ b/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 * 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 #include -#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(); +} -- cgit v1.2.3