1 /*
2 * (C) 2005-2011 by Pablo Neira Ayuso <pablo@netfilter.org>
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 */
9
10 #include "internal/internal.h"
11
12 /* these arrays are used by snprintf_default.c and snprintf_xml.c */
13 const char *const l3proto2str[AF_MAX] = {
14 [AF_INET] = "ipv4",
15 [AF_INET6] = "ipv6",
16 };
17
18 const char *const proto2str[IPPROTO_MAX] = {
19 [IPPROTO_TCP] = "tcp",
20 [IPPROTO_UDP] = "udp",
21 [IPPROTO_UDPLITE] = "udplite",
22 [IPPROTO_ICMP] = "icmp",
23 [IPPROTO_ICMPV6] = "icmpv6",
24 [IPPROTO_SCTP] = "sctp",
25 [IPPROTO_GRE] = "gre",
26 [IPPROTO_DCCP] = "dccp",
27 };
28
29 const char *const states[TCP_CONNTRACK_MAX] = {
30 [TCP_CONNTRACK_NONE] = "NONE",
31 [TCP_CONNTRACK_SYN_SENT] = "SYN_SENT",
32 [TCP_CONNTRACK_SYN_RECV] = "SYN_RECV",
33 [TCP_CONNTRACK_ESTABLISHED] = "ESTABLISHED",
34 [TCP_CONNTRACK_FIN_WAIT] = "FIN_WAIT",
35 [TCP_CONNTRACK_CLOSE_WAIT] = "CLOSE_WAIT",
36 [TCP_CONNTRACK_LAST_ACK] = "LAST_ACK",
37 [TCP_CONNTRACK_TIME_WAIT] = "TIME_WAIT",
38 [TCP_CONNTRACK_CLOSE] = "CLOSE",
39 [TCP_CONNTRACK_SYN_SENT2] = "SYN_SENT2",
40 };
41
42 const char *const sctp_states[SCTP_CONNTRACK_MAX] = {
43 [SCTP_CONNTRACK_NONE] = "NONE",
44 [SCTP_CONNTRACK_CLOSED] = "CLOSED",
45 [SCTP_CONNTRACK_COOKIE_WAIT] = "COOKIE_WAIT",
46 [SCTP_CONNTRACK_COOKIE_ECHOED] = "COOKIE_ECHOED",
47 [SCTP_CONNTRACK_ESTABLISHED] = "ESTABLISHED",
48 [SCTP_CONNTRACK_SHUTDOWN_SENT] = "SHUTDOWN_SENT",
49 [SCTP_CONNTRACK_SHUTDOWN_RECD] = "SHUTDOWN_RECD",
50 [SCTP_CONNTRACK_SHUTDOWN_ACK_SENT] = "SHUTDOWN_ACK_SENT",
51 };
52
53 const char *const dccp_states[DCCP_CONNTRACK_MAX] = {
54 [DCCP_CONNTRACK_NONE] = "NONE",
55 [DCCP_CONNTRACK_REQUEST] = "REQUEST",
56 [DCCP_CONNTRACK_RESPOND] = "RESPOND",
57 [DCCP_CONNTRACK_PARTOPEN] = "PARTOPEN",
58 [DCCP_CONNTRACK_OPEN] = "OPEN",
59 [DCCP_CONNTRACK_CLOSEREQ] = "CLOSEREQ",
60 [DCCP_CONNTRACK_CLOSING] = "CLOSING",
61 [DCCP_CONNTRACK_TIMEWAIT] = "TIMEWAIT",
62 [DCCP_CONNTRACK_IGNORE] = "IGNORE",
63 [DCCP_CONNTRACK_INVALID] = "INVALID",
64 };
65
__snprintf_conntrack(char * buf,unsigned int len,const struct nf_conntrack * ct,unsigned int type,unsigned int msg_output,unsigned int flags,struct nfct_labelmap * map)66 int __snprintf_conntrack(char *buf,
67 unsigned int len,
68 const struct nf_conntrack *ct,
69 unsigned int type,
70 unsigned int msg_output,
71 unsigned int flags,
72 struct nfct_labelmap *map)
73 {
74 int size;
75
76 switch(msg_output) {
77 case NFCT_O_DEFAULT:
78 size = __snprintf_conntrack_default(buf, len, ct, type, flags, map);
79 break;
80 case NFCT_O_XML:
81 size = __snprintf_conntrack_xml(buf, len, ct, type, flags, map);
82 break;
83 default:
84 errno = ENOENT;
85 return -1;
86 }
87
88 /* NULL terminated string */
89 buf[size+1 > len ? len-1 : size] = '\0';
90
91 return size;
92 }
93