/* * (C) 2005-2011 by Pablo Neira Ayuso * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #include "internal/internal.h" /* these arrays are used by snprintf_default.c and snprintf_xml.c */ const char *const l3proto2str[AF_MAX] = { [AF_INET] = "ipv4", [AF_INET6] = "ipv6", }; const char *const proto2str[IPPROTO_MAX] = { [IPPROTO_TCP] = "tcp", [IPPROTO_UDP] = "udp", [IPPROTO_UDPLITE] = "udplite", [IPPROTO_ICMP] = "icmp", [IPPROTO_ICMPV6] = "icmpv6", [IPPROTO_SCTP] = "sctp", [IPPROTO_GRE] = "gre", [IPPROTO_DCCP] = "dccp", }; const char *const states[TCP_CONNTRACK_MAX] = { [TCP_CONNTRACK_NONE] = "NONE", [TCP_CONNTRACK_SYN_SENT] = "SYN_SENT", [TCP_CONNTRACK_SYN_RECV] = "SYN_RECV", [TCP_CONNTRACK_ESTABLISHED] = "ESTABLISHED", [TCP_CONNTRACK_FIN_WAIT] = "FIN_WAIT", [TCP_CONNTRACK_CLOSE_WAIT] = "CLOSE_WAIT", [TCP_CONNTRACK_LAST_ACK] = "LAST_ACK", [TCP_CONNTRACK_TIME_WAIT] = "TIME_WAIT", [TCP_CONNTRACK_CLOSE] = "CLOSE", [TCP_CONNTRACK_SYN_SENT2] = "SYN_SENT2", }; const char *const sctp_states[SCTP_CONNTRACK_MAX] = { [SCTP_CONNTRACK_NONE] = "NONE", [SCTP_CONNTRACK_CLOSED] = "CLOSED", [SCTP_CONNTRACK_COOKIE_WAIT] = "COOKIE_WAIT", [SCTP_CONNTRACK_COOKIE_ECHOED] = "COOKIE_ECHOED", [SCTP_CONNTRACK_ESTABLISHED] = "ESTABLISHED", [SCTP_CONNTRACK_SHUTDOWN_SENT] = "SHUTDOWN_SENT", [SCTP_CONNTRACK_SHUTDOWN_RECD] = "SHUTDOWN_RECD", [SCTP_CONNTRACK_SHUTDOWN_ACK_SENT] = "SHUTDOWN_ACK_SENT", }; const char *const dccp_states[DCCP_CONNTRACK_MAX] = { [DCCP_CONNTRACK_NONE] = "NONE", [DCCP_CONNTRACK_REQUEST] = "REQUEST", [DCCP_CONNTRACK_RESPOND] = "RESPOND", [DCCP_CONNTRACK_PARTOPEN] = "PARTOPEN", [DCCP_CONNTRACK_OPEN] = "OPEN", [DCCP_CONNTRACK_CLOSEREQ] = "CLOSEREQ", [DCCP_CONNTRACK_CLOSING] = "CLOSING", [DCCP_CONNTRACK_TIMEWAIT] = "TIMEWAIT", [DCCP_CONNTRACK_IGNORE] = "IGNORE", [DCCP_CONNTRACK_INVALID] = "INVALID", }; int __snprintf_conntrack(char *buf, unsigned int len, const struct nf_conntrack *ct, unsigned int type, unsigned int msg_output, unsigned int flags) { int size; switch(msg_output) { case NFCT_O_DEFAULT: size = __snprintf_conntrack_default(buf, len, ct, type, flags); break; case NFCT_O_XML: size = __snprintf_conntrack_xml(buf, len, ct, type, flags); break; default: errno = ENOENT; return -1; } /* NULL terminated string */ buf[size+1 > len ? len-1 : size] = '\0'; return size; }