00001
00002
00003
00004
00005
00006
00007
00008 #include "internal/internal.h"
00009
00010
00011 const char *const l3proto2str[AF_MAX] = {
00012 [AF_INET] = "ipv4",
00013 [AF_INET6] = "ipv6",
00014 };
00015
00016 const char *const proto2str[IPPROTO_MAX] = {
00017 [IPPROTO_TCP] = "tcp",
00018 [IPPROTO_UDP] = "udp",
00019 [IPPROTO_UDPLITE] = "udplite",
00020 [IPPROTO_ICMP] = "icmp",
00021 [IPPROTO_ICMPV6] = "icmpv6",
00022 [IPPROTO_SCTP] = "sctp",
00023 [IPPROTO_GRE] = "gre",
00024 [IPPROTO_DCCP] = "dccp",
00025 };
00026
00027 const char *const states[TCP_CONNTRACK_MAX] = {
00028 [TCP_CONNTRACK_NONE] = "NONE",
00029 [TCP_CONNTRACK_SYN_SENT] = "SYN_SENT",
00030 [TCP_CONNTRACK_SYN_RECV] = "SYN_RECV",
00031 [TCP_CONNTRACK_ESTABLISHED] = "ESTABLISHED",
00032 [TCP_CONNTRACK_FIN_WAIT] = "FIN_WAIT",
00033 [TCP_CONNTRACK_CLOSE_WAIT] = "CLOSE_WAIT",
00034 [TCP_CONNTRACK_LAST_ACK] = "LAST_ACK",
00035 [TCP_CONNTRACK_TIME_WAIT] = "TIME_WAIT",
00036 [TCP_CONNTRACK_CLOSE] = "CLOSE",
00037 [TCP_CONNTRACK_SYN_SENT2] = "SYN_SENT2",
00038 };
00039
00040 const char *const sctp_states[SCTP_CONNTRACK_MAX] = {
00041 [SCTP_CONNTRACK_NONE] = "NONE",
00042 [SCTP_CONNTRACK_CLOSED] = "CLOSED",
00043 [SCTP_CONNTRACK_COOKIE_WAIT] = "COOKIE_WAIT",
00044 [SCTP_CONNTRACK_COOKIE_ECHOED] = "COOKIE_ECHOED",
00045 [SCTP_CONNTRACK_ESTABLISHED] = "ESTABLISHED",
00046 [SCTP_CONNTRACK_SHUTDOWN_SENT] = "SHUTDOWN_SENT",
00047 [SCTP_CONNTRACK_SHUTDOWN_RECD] = "SHUTDOWN_RECD",
00048 [SCTP_CONNTRACK_SHUTDOWN_ACK_SENT] = "SHUTDOWN_ACK_SENT",
00049 };
00050
00051 const char *const dccp_states[DCCP_CONNTRACK_MAX] = {
00052 [DCCP_CONNTRACK_NONE] = "NONE",
00053 [DCCP_CONNTRACK_REQUEST] = "REQUEST",
00054 [DCCP_CONNTRACK_RESPOND] = "RESPOND",
00055 [DCCP_CONNTRACK_PARTOPEN] = "PARTOPEN",
00056 [DCCP_CONNTRACK_OPEN] = "OPEN",
00057 [DCCP_CONNTRACK_CLOSEREQ] = "CLOSEREQ",
00058 [DCCP_CONNTRACK_CLOSING] = "CLOSING",
00059 [DCCP_CONNTRACK_TIMEWAIT] = "TIMEWAIT",
00060 [DCCP_CONNTRACK_IGNORE] = "IGNORE",
00061 [DCCP_CONNTRACK_INVALID] = "INVALID",
00062 };
00063
00064 int __snprintf_conntrack(char *buf,
00065 unsigned int len,
00066 const struct nf_conntrack *ct,
00067 unsigned int type,
00068 unsigned int msg_output,
00069 unsigned int flags)
00070 {
00071 int size;
00072
00073 switch(msg_output) {
00074 case NFCT_O_DEFAULT:
00075 size = __snprintf_conntrack_default(buf, len, ct, type, flags);
00076 break;
00077 case NFCT_O_XML:
00078 size = __snprintf_conntrack_xml(buf, len, ct, type, flags);
00079 break;
00080 default:
00081 errno = ENOENT;
00082 return -1;
00083 }
00084
00085
00086 buf[size+1 > len ? len-1 : size] = '\0';
00087
00088 return size;
00089 }