From f2c0b30fcdca99a0a3db69e1118b406e1829541c Mon Sep 17 00:00:00 2001 From: "/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org" Date: Sun, 10 Feb 2008 02:07:42 +0000 Subject: revert r7348 --- filter/raw2packet/ulogd_raw2packet_BASE.c | 32 +++++++++---------------------- input/packet/ulogd_inppkt_NFLOG.c | 15 +++++++++++++++ input/packet/ulogd_inppkt_ULOG.c | 9 +++++++++ 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/filter/raw2packet/ulogd_raw2packet_BASE.c b/filter/raw2packet/ulogd_raw2packet_BASE.c index 62a9a87..48f2993 100644 --- a/filter/raw2packet/ulogd_raw2packet_BASE.c +++ b/filter/raw2packet/ulogd_raw2packet_BASE.c @@ -44,7 +44,6 @@ #include enum output_keys { - KEY_OOB_FAMILY, KEY_IP_SADDR, KEY_IP_DADDR, KEY_IP_PROTOCOL, @@ -99,11 +98,6 @@ enum output_keys { }; static struct ulogd_key iphdr_rets[] = { - [KEY_OOB_FAMILY] = { - .type = ULOGD_RET_UINT8, - .flags = ULOGD_RETF_NONE, - .name = "oob.family", - }, [KEY_IP_SADDR] = { .type = ULOGD_RET_IPADDR, .flags = ULOGD_RETF_NONE, @@ -825,27 +819,15 @@ out: static int _interp_pkt(struct ulogd_pluginstance *pi) { - struct ulogd_key *ret = pi->output.keys; - struct iphdr *iph = pi->input.keys[0].u.source->u.value.ptr; u_int32_t len = pi->input.keys[1].u.source->u.value.ui32; u_int8_t family = pi->input.keys[2].u.source->u.value.ui8; - switch (iph->version) { - case 4: - ret[KEY_OOB_FAMILY].u.value.ui8 = AF_INET; - ret[KEY_OOB_FAMILY].flags |= ULOGD_RETF_VALID; - - return _interp_iphdr(pi, len); - case 6: - ret[KEY_OOB_FAMILY].u.value.ui8 = AF_INET6; - ret[KEY_OOB_FAMILY].flags |= ULOGD_RETF_VALID; - - return _interp_ipv6hdr(pi, len); - default: - /* unknown protocol */ - return 0; + switch (family) { + case AF_INET: + return _interp_iphdr(pi, len); + case AF_INET6: + return _interp_ipv6hdr(pi, len); } - return 0; } @@ -865,6 +847,10 @@ static struct ulogd_key base_inp[] = { .vendor = IPFIX_VENDOR_NETFILTER, .field_id = IPFIX_NF_rawpacket_length, }, + }, + { + .type = ULOGD_RET_UINT8, + .name = "oob.family", } }; diff --git a/input/packet/ulogd_inppkt_NFLOG.c b/input/packet/ulogd_inppkt_NFLOG.c index 8b6811c..3f013cc 100644 --- a/input/packet/ulogd_inppkt_NFLOG.c +++ b/input/packet/ulogd_inppkt_NFLOG.c @@ -54,6 +54,12 @@ static struct config_keyset libulog_kset = { .options = CONFIG_OPT_NONE, .u.value = NFLOG_RMEM_DEFAULT, }, + { + .key = "addressfamily", + .type = CONFIG_TYPE_INT, + .options = CONFIG_OPT_NONE, + .u.value = AF_INET, + }, { .key = "unbind", .type = CONFIG_TYPE_INT, @@ -98,6 +104,7 @@ enum nflog_keys { NFLOG_KEY_RAW_MAC_LEN, NFLOG_KEY_OOB_SEQ_LOCAL, NFLOG_KEY_OOB_SEQ_GLOBAL, + NFLOG_KEY_OOB_FAMILY, NFLOG_KEY_OOB_PROTOCOL, NFLOG_KEY_OOB_UID, }; @@ -224,6 +231,11 @@ static struct ulogd_key output_keys[] = { .field_id = IPFIX_NF_seq_global, }, }, + { + .type = ULOGD_RET_UINT8, + .flags = ULOGD_RETF_NONE, + .name = "oob.family", + }, { .type = ULOGD_RET_UINT16, .flags = ULOGD_RETF_NONE, @@ -255,6 +267,9 @@ interp_packet(struct ulogd_pluginstance *upi, struct nflog_data *ldata) u_int32_t uid; + ret[NFLOG_KEY_OOB_FAMILY].u.value.ui8 = af_ce(upi->config_kset).u.value; + ret[NFLOG_KEY_OOB_FAMILY].flags |= ULOGD_RETF_VALID; + if (ph) { /* FIXME */ ret[NFLOG_KEY_OOB_HOOK].u.value.ui8 = ph->hook; diff --git a/input/packet/ulogd_inppkt_ULOG.c b/input/packet/ulogd_inppkt_ULOG.c index 77087a4..cf44474 100644 --- a/input/packet/ulogd_inppkt_ULOG.c +++ b/input/packet/ulogd_inppkt_ULOG.c @@ -68,6 +68,7 @@ enum ulog_keys { ULOG_KEY_OOB_IN, ULOG_KEY_OOB_OUT, ULOG_KEY_RAW_MAC_LEN, + ULOG_KEY_OOB_FAMILY, ULOG_KEY_OOB_PROTOCOL, }; @@ -146,6 +147,11 @@ static struct ulogd_key output_keys[] = { .flags = ULOGD_RETF_NONE, .name = "raw.mac_len", }, + { + .type = ULOGD_RET_UINT8, + .flags = ULOGD_RETF_NONE, + .name = "oob.family", + }, { .type = ULOGD_RET_UINT16, .flags = ULOGD_RETF_NONE, @@ -195,6 +201,9 @@ static int interp_packet(struct ulogd_pluginstance *ip, ulog_packet_msg_t *pkt) ret[ULOG_KEY_OOB_OUT].u.value.ptr = pkt->outdev_name; ret[ULOG_KEY_OOB_OUT].flags |= ULOGD_RETF_VALID; + /* ULOG is IPv4 only */ + ret[ULOG_KEY_OOB_FAMILY].u.value.ui8 = AF_INET; + ret[ULOG_KEY_OOB_FAMILY].flags |= ULOGD_RETF_VALID; /* Undef in ULOG but necessary */ ret[ULOG_KEY_OOB_PROTOCOL].u.value.ui16 = 0; ret[ULOG_KEY_OOB_PROTOCOL].flags |= ULOGD_RETF_VALID; -- cgit v1.2.3