From f5b3bf344df7ef631bea85f7dce78a5328a13eb7 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Tue, 26 Jan 2016 12:03:03 +0100 Subject: [PATCH] factor out IPPROTO switch for reuse --- src/pvefw-logger.c | 55 +++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/src/pvefw-logger.c b/src/pvefw-logger.c index 19beb18..5b00758 100644 --- a/src/pvefw-logger.c +++ b/src/pvefw-logger.c @@ -318,6 +318,37 @@ print_sctp(struct log_entry *le, struct sctphdr *h, int payload_len) return 0; } +static int +print_ipproto(struct log_entry *le, char * nexthdr, int payload_len, u_int8_t proto) +{ + switch (proto) { + case IPPROTO_TCP: + print_tcp(le, (struct tcphdr *)nexthdr, payload_len); + break; + case IPPROTO_UDP: + print_udp(le, (struct udphdr *)nexthdr, payload_len); + break; + case IPPROTO_ICMP: + print_icmp(le, (struct icmphdr *)nexthdr, payload_len); + break; + case IPPROTO_SCTP: + print_sctp(le, (struct sctphdr *)nexthdr, payload_len); + break; + case IPPROTO_AH: + LEPRINTF("PROTO=AH "); + break; + case IPPROTO_ESP: + LEPRINTF("PROTO=ESP "); + break; + case IPPROTO_IGMP: + LEPRINTF("PROTO=IGMP "); + break; + default: + return -1; + } + return 0; +} + static int print_iphdr(struct log_entry *le, char * payload, int payload_len) { @@ -355,29 +386,7 @@ print_iphdr(struct log_entry *le, char * payload, int payload_len) void *nexthdr = (u_int32_t *)h + h->ihl; payload_len -= h->ihl * 4; - switch (h->protocol) { - case IPPROTO_TCP: - print_tcp(le, (struct tcphdr *)nexthdr, payload_len); - break; - case IPPROTO_UDP: - print_udp(le, (struct udphdr *)nexthdr, payload_len); - break; - case IPPROTO_ICMP: - print_icmp(le, (struct icmphdr *)nexthdr, payload_len); - break; - case IPPROTO_SCTP: - print_sctp(le, (struct sctphdr *)nexthdr, payload_len); - break; - case IPPROTO_AH: - LEPRINTF("PROTO=AH "); - break; - case IPPROTO_ESP: - LEPRINTF("PROTO=ESP "); - break; - case IPPROTO_IGMP: - LEPRINTF("PROTO=IGMP "); - break; - default: + if (print_ipproto(le, nexthdr, payload_len, h->protocol) < 0) { LEPRINTF("PROTO=%u ", h->protocol); } -- 2.39.2