Commit 9b5b5cff authored by Arjan van de Ven's avatar Arjan van de Ven Committed by David S. Miller

[NET]: Add const markers to various variables.

the patch below marks various variables const in net/; the goal is to
move them to the .rodata section so that they can't false-share
cachelines with things that get written to, as well as potentially
helping gcc a bit with optimisations.  (these were found using a gcc
patch to warn about such variables)
Signed-off-by: default avatarArjan van de Ven <arjan@infradead.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fb296449
...@@ -975,7 +975,7 @@ static void fib_seq_stop(struct seq_file *seq, void *v) ...@@ -975,7 +975,7 @@ static void fib_seq_stop(struct seq_file *seq, void *v)
static unsigned fib_flag_trans(int type, u32 mask, struct fib_info *fi) static unsigned fib_flag_trans(int type, u32 mask, struct fib_info *fi)
{ {
static unsigned type2flags[RTN_MAX + 1] = { static const unsigned type2flags[RTN_MAX + 1] = {
[7] = RTF_REJECT, [8] = RTF_REJECT, [7] = RTF_REJECT, [8] = RTF_REJECT,
}; };
unsigned flags = type2flags[type]; unsigned flags = type2flags[type];
......
...@@ -83,7 +83,7 @@ for (nhsel=0; nhsel < 1; nhsel++) ...@@ -83,7 +83,7 @@ for (nhsel=0; nhsel < 1; nhsel++)
#define endfor_nexthops(fi) } #define endfor_nexthops(fi) }
static struct static const struct
{ {
int error; int error;
u8 scope; u8 scope;
......
...@@ -220,7 +220,7 @@ struct icmp_control { ...@@ -220,7 +220,7 @@ struct icmp_control {
short error; /* This ICMP is classed as an error message */ short error; /* This ICMP is classed as an error message */
}; };
static struct icmp_control icmp_pointers[NR_ICMP_TYPES+1]; static const struct icmp_control icmp_pointers[NR_ICMP_TYPES+1];
/* /*
* The ICMP socket(s). This is the most convenient way to flow control * The ICMP socket(s). This is the most convenient way to flow control
...@@ -994,7 +994,7 @@ int icmp_rcv(struct sk_buff *skb) ...@@ -994,7 +994,7 @@ int icmp_rcv(struct sk_buff *skb)
/* /*
* This table is the definition of how we handle ICMP. * This table is the definition of how we handle ICMP.
*/ */
static struct icmp_control icmp_pointers[NR_ICMP_TYPES + 1] = { static const struct icmp_control icmp_pointers[NR_ICMP_TYPES + 1] = {
[ICMP_ECHOREPLY] = { [ICMP_ECHOREPLY] = {
.output_entry = ICMP_MIB_OUTECHOREPS, .output_entry = ICMP_MIB_OUTECHOREPS,
.input_entry = ICMP_MIB_INECHOREPS, .input_entry = ICMP_MIB_INECHOREPS,
......
...@@ -771,7 +771,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp) ...@@ -771,7 +771,7 @@ static inline int todrop_entry(struct ip_vs_conn *cp)
* The drop rate array needs tuning for real environments. * The drop rate array needs tuning for real environments.
* Called from timer bh only => no locking * Called from timer bh only => no locking
*/ */
static char todrop_rate[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; static const char todrop_rate[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
static char todrop_counter[9] = {0}; static char todrop_counter[9] = {0};
int i; int i;
......
...@@ -1909,7 +1909,7 @@ static int ip_vs_set_timeout(struct ip_vs_timeout_user *u) ...@@ -1909,7 +1909,7 @@ static int ip_vs_set_timeout(struct ip_vs_timeout_user *u)
#define DAEMON_ARG_LEN (sizeof(struct ip_vs_daemon_user)) #define DAEMON_ARG_LEN (sizeof(struct ip_vs_daemon_user))
#define MAX_ARG_LEN SVCDEST_ARG_LEN #define MAX_ARG_LEN SVCDEST_ARG_LEN
static unsigned char set_arglen[SET_CMDID(IP_VS_SO_SET_MAX)+1] = { static const unsigned char set_arglen[SET_CMDID(IP_VS_SO_SET_MAX)+1] = {
[SET_CMDID(IP_VS_SO_SET_ADD)] = SERVICE_ARG_LEN, [SET_CMDID(IP_VS_SO_SET_ADD)] = SERVICE_ARG_LEN,
[SET_CMDID(IP_VS_SO_SET_EDIT)] = SERVICE_ARG_LEN, [SET_CMDID(IP_VS_SO_SET_EDIT)] = SERVICE_ARG_LEN,
[SET_CMDID(IP_VS_SO_SET_DEL)] = SERVICE_ARG_LEN, [SET_CMDID(IP_VS_SO_SET_DEL)] = SERVICE_ARG_LEN,
...@@ -2180,7 +2180,7 @@ __ip_vs_get_timeouts(struct ip_vs_timeout_user *u) ...@@ -2180,7 +2180,7 @@ __ip_vs_get_timeouts(struct ip_vs_timeout_user *u)
#define GET_TIMEOUT_ARG_LEN (sizeof(struct ip_vs_timeout_user)) #define GET_TIMEOUT_ARG_LEN (sizeof(struct ip_vs_timeout_user))
#define GET_DAEMON_ARG_LEN (sizeof(struct ip_vs_daemon_user) * 2) #define GET_DAEMON_ARG_LEN (sizeof(struct ip_vs_daemon_user) * 2)
static unsigned char get_arglen[GET_CMDID(IP_VS_SO_GET_MAX)+1] = { static const unsigned char get_arglen[GET_CMDID(IP_VS_SO_GET_MAX)+1] = {
[GET_CMDID(IP_VS_SO_GET_VERSION)] = 64, [GET_CMDID(IP_VS_SO_GET_VERSION)] = 64,
[GET_CMDID(IP_VS_SO_GET_INFO)] = GET_INFO_ARG_LEN, [GET_CMDID(IP_VS_SO_GET_INFO)] = GET_INFO_ARG_LEN,
[GET_CMDID(IP_VS_SO_GET_SERVICES)] = GET_SERVICES_ARG_LEN, [GET_CMDID(IP_VS_SO_GET_SERVICES)] = GET_SERVICES_ARG_LEN,
......
...@@ -251,7 +251,7 @@ tcp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp) ...@@ -251,7 +251,7 @@ tcp_csum_check(struct sk_buff *skb, struct ip_vs_protocol *pp)
#define TCP_DIR_OUTPUT 4 #define TCP_DIR_OUTPUT 4
#define TCP_DIR_INPUT_ONLY 8 #define TCP_DIR_INPUT_ONLY 8
static int tcp_state_off[IP_VS_DIR_LAST] = { static const int tcp_state_off[IP_VS_DIR_LAST] = {
[IP_VS_DIR_INPUT] = TCP_DIR_INPUT, [IP_VS_DIR_INPUT] = TCP_DIR_INPUT,
[IP_VS_DIR_OUTPUT] = TCP_DIR_OUTPUT, [IP_VS_DIR_OUTPUT] = TCP_DIR_OUTPUT,
[IP_VS_DIR_INPUT_ONLY] = TCP_DIR_INPUT_ONLY, [IP_VS_DIR_INPUT_ONLY] = TCP_DIR_INPUT_ONLY,
......
...@@ -37,7 +37,7 @@ MODULE_LICENSE("GPL"); ...@@ -37,7 +37,7 @@ MODULE_LICENSE("GPL");
module_param(master_timeout, int, 0600); module_param(master_timeout, int, 0600);
MODULE_PARM_DESC(master_timeout, "timeout for the master connection"); MODULE_PARM_DESC(master_timeout, "timeout for the master connection");
static char *conns[] = { "DATA ", "MESG ", "INDEX " }; static const char *conns[] = { "DATA ", "MESG ", "INDEX " };
/* This is slow, but it's simple. --RR */ /* This is slow, but it's simple. --RR */
static char *amanda_buffer; static char *amanda_buffer;
......
...@@ -55,7 +55,7 @@ static int try_rfc959(const char *, size_t, u_int32_t [], char); ...@@ -55,7 +55,7 @@ static int try_rfc959(const char *, size_t, u_int32_t [], char);
static int try_eprt(const char *, size_t, u_int32_t [], char); static int try_eprt(const char *, size_t, u_int32_t [], char);
static int try_epsv_response(const char *, size_t, u_int32_t [], char); static int try_epsv_response(const char *, size_t, u_int32_t [], char);
static struct ftp_search { static const struct ftp_search {
enum ip_conntrack_dir dir; enum ip_conntrack_dir dir;
const char *pattern; const char *pattern;
size_t plen; size_t plen;
......
...@@ -59,7 +59,7 @@ MODULE_PARM_DESC(max_dcc_channels, "max number of expected DCC channels per IRC ...@@ -59,7 +59,7 @@ MODULE_PARM_DESC(max_dcc_channels, "max number of expected DCC channels per IRC
module_param(dcc_timeout, int, 0400); module_param(dcc_timeout, int, 0400);
MODULE_PARM_DESC(dcc_timeout, "timeout on for unestablished DCC channels"); MODULE_PARM_DESC(dcc_timeout, "timeout on for unestablished DCC channels");
static char *dccprotos[] = { "SEND ", "CHAT ", "MOVE ", "TSEND ", "SCHAT " }; static const char *dccprotos[] = { "SEND ", "CHAT ", "MOVE ", "TSEND ", "SCHAT " };
#define MINMATCHLEN 5 #define MINMATCHLEN 5
#if 0 #if 0
......
...@@ -51,7 +51,7 @@ static int icmp_invert_tuple(struct ip_conntrack_tuple *tuple, ...@@ -51,7 +51,7 @@ static int icmp_invert_tuple(struct ip_conntrack_tuple *tuple,
const struct ip_conntrack_tuple *orig) const struct ip_conntrack_tuple *orig)
{ {
/* Add 1; spaces filled with 0. */ /* Add 1; spaces filled with 0. */
static u_int8_t invmap[] static const u_int8_t invmap[]
= { [ICMP_ECHO] = ICMP_ECHOREPLY + 1, = { [ICMP_ECHO] = ICMP_ECHOREPLY + 1,
[ICMP_ECHOREPLY] = ICMP_ECHO + 1, [ICMP_ECHOREPLY] = ICMP_ECHO + 1,
[ICMP_TIMESTAMP] = ICMP_TIMESTAMPREPLY + 1, [ICMP_TIMESTAMP] = ICMP_TIMESTAMPREPLY + 1,
...@@ -110,7 +110,7 @@ static int icmp_packet(struct ip_conntrack *ct, ...@@ -110,7 +110,7 @@ static int icmp_packet(struct ip_conntrack *ct,
return NF_ACCEPT; return NF_ACCEPT;
} }
static u_int8_t valid_new[] = { static const u_int8_t valid_new[] = {
[ICMP_ECHO] = 1, [ICMP_ECHO] = 1,
[ICMP_TIMESTAMP] = 1, [ICMP_TIMESTAMP] = 1,
[ICMP_INFO_REQUEST] = 1, [ICMP_INFO_REQUEST] = 1,
......
...@@ -65,7 +65,7 @@ static unsigned long ip_ct_sctp_timeout_shutdown_sent = 300 SECS / 1000; ...@@ -65,7 +65,7 @@ static unsigned long ip_ct_sctp_timeout_shutdown_sent = 300 SECS / 1000;
static unsigned long ip_ct_sctp_timeout_shutdown_recd = 300 SECS / 1000; static unsigned long ip_ct_sctp_timeout_shutdown_recd = 300 SECS / 1000;
static unsigned long ip_ct_sctp_timeout_shutdown_ack_sent = 3 SECS; static unsigned long ip_ct_sctp_timeout_shutdown_ack_sent = 3 SECS;
static unsigned long * sctp_timeouts[] static const unsigned long * sctp_timeouts[]
= { NULL, /* SCTP_CONNTRACK_NONE */ = { NULL, /* SCTP_CONNTRACK_NONE */
&ip_ct_sctp_timeout_closed, /* SCTP_CONNTRACK_CLOSED */ &ip_ct_sctp_timeout_closed, /* SCTP_CONNTRACK_CLOSED */
&ip_ct_sctp_timeout_cookie_wait, /* SCTP_CONNTRACK_COOKIE_WAIT */ &ip_ct_sctp_timeout_cookie_wait, /* SCTP_CONNTRACK_COOKIE_WAIT */
...@@ -118,7 +118,7 @@ cookie echoed to closed. ...@@ -118,7 +118,7 @@ cookie echoed to closed.
*/ */
/* SCTP conntrack state transitions */ /* SCTP conntrack state transitions */
static enum sctp_conntrack sctp_conntracks[2][9][SCTP_CONNTRACK_MAX] = { static const enum sctp_conntrack sctp_conntracks[2][9][SCTP_CONNTRACK_MAX] = {
{ {
/* ORIGINAL */ /* ORIGINAL */
/* sNO, sCL, sCW, sCE, sES, sSS, sSR, sSA */ /* sNO, sCL, sCW, sCE, sES, sSS, sSR, sSA */
......
...@@ -99,7 +99,7 @@ unsigned long ip_ct_tcp_timeout_close = 10 SECS; ...@@ -99,7 +99,7 @@ unsigned long ip_ct_tcp_timeout_close = 10 SECS;
to ~13-30min depending on RTO. */ to ~13-30min depending on RTO. */
unsigned long ip_ct_tcp_timeout_max_retrans = 5 MINS; unsigned long ip_ct_tcp_timeout_max_retrans = 5 MINS;
static unsigned long * tcp_timeouts[] static const unsigned long * tcp_timeouts[]
= { NULL, /* TCP_CONNTRACK_NONE */ = { NULL, /* TCP_CONNTRACK_NONE */
&ip_ct_tcp_timeout_syn_sent, /* TCP_CONNTRACK_SYN_SENT, */ &ip_ct_tcp_timeout_syn_sent, /* TCP_CONNTRACK_SYN_SENT, */
&ip_ct_tcp_timeout_syn_recv, /* TCP_CONNTRACK_SYN_RECV, */ &ip_ct_tcp_timeout_syn_recv, /* TCP_CONNTRACK_SYN_RECV, */
...@@ -170,7 +170,7 @@ enum tcp_bit_set { ...@@ -170,7 +170,7 @@ enum tcp_bit_set {
* if they are invalid * if they are invalid
* or we do not support the request (simultaneous open) * or we do not support the request (simultaneous open)
*/ */
static enum tcp_conntrack tcp_conntracks[2][6][TCP_CONNTRACK_MAX] = { static const enum tcp_conntrack tcp_conntracks[2][6][TCP_CONNTRACK_MAX] = {
{ {
/* ORIGINAL */ /* ORIGINAL */
/* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sLI */ /* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sLI */
...@@ -817,7 +817,7 @@ void ip_conntrack_tcp_update(struct sk_buff *skb, ...@@ -817,7 +817,7 @@ void ip_conntrack_tcp_update(struct sk_buff *skb,
#define TH_CWR 0x80 #define TH_CWR 0x80
/* table of valid flag combinations - ECE and CWR are always valid */ /* table of valid flag combinations - ECE and CWR are always valid */
static u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG) + 1] = static const u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG) + 1] =
{ {
[TH_SYN] = 1, [TH_SYN] = 1,
[TH_SYN|TH_ACK] = 1, [TH_SYN|TH_ACK] = 1,
......
...@@ -1892,7 +1892,7 @@ static int ipt_get_matches(char *buffer, char **start, off_t offset, int length) ...@@ -1892,7 +1892,7 @@ static int ipt_get_matches(char *buffer, char **start, off_t offset, int length)
return pos; return pos;
} }
static struct { char *name; get_info_t *get_info; } ipt_proc_entry[] = static const struct { char *name; get_info_t *get_info; } ipt_proc_entry[] =
{ { "ip_tables_names", ipt_get_tables }, { { "ip_tables_names", ipt_get_tables },
{ "ip_tables_targets", ipt_get_targets }, { "ip_tables_targets", ipt_get_targets },
{ "ip_tables_matches", ipt_get_matches }, { "ip_tables_matches", ipt_get_matches },
......
...@@ -197,7 +197,7 @@ static void dump_packet(const struct nf_loginfo *info, ...@@ -197,7 +197,7 @@ static void dump_packet(const struct nf_loginfo *info,
} }
case IPPROTO_ICMP: { case IPPROTO_ICMP: {
struct icmphdr _icmph, *ich; struct icmphdr _icmph, *ich;
static size_t required_len[NR_ICMP_TYPES+1] static const size_t required_len[NR_ICMP_TYPES+1]
= { [ICMP_ECHOREPLY] = 4, = { [ICMP_ECHOREPLY] = 4,
[ICMP_DEST_UNREACH] [ICMP_DEST_UNREACH]
= 8 + sizeof(struct iphdr), = 8 + sizeof(struct iphdr),
......
...@@ -98,7 +98,7 @@ fold_field(void *mib[], int offt) ...@@ -98,7 +98,7 @@ fold_field(void *mib[], int offt)
} }
/* snmp items */ /* snmp items */
static struct snmp_mib snmp4_ipstats_list[] = { static const struct snmp_mib snmp4_ipstats_list[] = {
SNMP_MIB_ITEM("InReceives", IPSTATS_MIB_INRECEIVES), SNMP_MIB_ITEM("InReceives", IPSTATS_MIB_INRECEIVES),
SNMP_MIB_ITEM("InHdrErrors", IPSTATS_MIB_INHDRERRORS), SNMP_MIB_ITEM("InHdrErrors", IPSTATS_MIB_INHDRERRORS),
SNMP_MIB_ITEM("InAddrErrors", IPSTATS_MIB_INADDRERRORS), SNMP_MIB_ITEM("InAddrErrors", IPSTATS_MIB_INADDRERRORS),
...@@ -119,7 +119,7 @@ static struct snmp_mib snmp4_ipstats_list[] = { ...@@ -119,7 +119,7 @@ static struct snmp_mib snmp4_ipstats_list[] = {
SNMP_MIB_SENTINEL SNMP_MIB_SENTINEL
}; };
static struct snmp_mib snmp4_icmp_list[] = { static const struct snmp_mib snmp4_icmp_list[] = {
SNMP_MIB_ITEM("InMsgs", ICMP_MIB_INMSGS), SNMP_MIB_ITEM("InMsgs", ICMP_MIB_INMSGS),
SNMP_MIB_ITEM("InErrors", ICMP_MIB_INERRORS), SNMP_MIB_ITEM("InErrors", ICMP_MIB_INERRORS),
SNMP_MIB_ITEM("InDestUnreachs", ICMP_MIB_INDESTUNREACHS), SNMP_MIB_ITEM("InDestUnreachs", ICMP_MIB_INDESTUNREACHS),
...@@ -149,7 +149,7 @@ static struct snmp_mib snmp4_icmp_list[] = { ...@@ -149,7 +149,7 @@ static struct snmp_mib snmp4_icmp_list[] = {
SNMP_MIB_SENTINEL SNMP_MIB_SENTINEL
}; };
static struct snmp_mib snmp4_tcp_list[] = { static const struct snmp_mib snmp4_tcp_list[] = {
SNMP_MIB_ITEM("RtoAlgorithm", TCP_MIB_RTOALGORITHM), SNMP_MIB_ITEM("RtoAlgorithm", TCP_MIB_RTOALGORITHM),
SNMP_MIB_ITEM("RtoMin", TCP_MIB_RTOMIN), SNMP_MIB_ITEM("RtoMin", TCP_MIB_RTOMIN),
SNMP_MIB_ITEM("RtoMax", TCP_MIB_RTOMAX), SNMP_MIB_ITEM("RtoMax", TCP_MIB_RTOMAX),
...@@ -167,7 +167,7 @@ static struct snmp_mib snmp4_tcp_list[] = { ...@@ -167,7 +167,7 @@ static struct snmp_mib snmp4_tcp_list[] = {
SNMP_MIB_SENTINEL SNMP_MIB_SENTINEL
}; };
static struct snmp_mib snmp4_udp_list[] = { static const struct snmp_mib snmp4_udp_list[] = {
SNMP_MIB_ITEM("InDatagrams", UDP_MIB_INDATAGRAMS), SNMP_MIB_ITEM("InDatagrams", UDP_MIB_INDATAGRAMS),
SNMP_MIB_ITEM("NoPorts", UDP_MIB_NOPORTS), SNMP_MIB_ITEM("NoPorts", UDP_MIB_NOPORTS),
SNMP_MIB_ITEM("InErrors", UDP_MIB_INERRORS), SNMP_MIB_ITEM("InErrors", UDP_MIB_INERRORS),
...@@ -175,7 +175,7 @@ static struct snmp_mib snmp4_udp_list[] = { ...@@ -175,7 +175,7 @@ static struct snmp_mib snmp4_udp_list[] = {
SNMP_MIB_SENTINEL SNMP_MIB_SENTINEL
}; };
static struct snmp_mib snmp4_net_list[] = { static const struct snmp_mib snmp4_net_list[] = {
SNMP_MIB_ITEM("SyncookiesSent", LINUX_MIB_SYNCOOKIESSENT), SNMP_MIB_ITEM("SyncookiesSent", LINUX_MIB_SYNCOOKIESSENT),
SNMP_MIB_ITEM("SyncookiesRecv", LINUX_MIB_SYNCOOKIESRECV), SNMP_MIB_ITEM("SyncookiesRecv", LINUX_MIB_SYNCOOKIESRECV),
SNMP_MIB_ITEM("SyncookiesFailed", LINUX_MIB_SYNCOOKIESFAILED), SNMP_MIB_ITEM("SyncookiesFailed", LINUX_MIB_SYNCOOKIESFAILED),
......
...@@ -1371,7 +1371,7 @@ out: kfree_skb(skb); ...@@ -1371,7 +1371,7 @@ out: kfree_skb(skb);
* are needed for AMPRnet AX.25 paths. * are needed for AMPRnet AX.25 paths.
*/ */
static unsigned short mtu_plateau[] = static const unsigned short mtu_plateau[] =
{32000, 17914, 8166, 4352, 2002, 1492, 576, 296, 216, 128 }; {32000, 17914, 8166, 4352, 2002, 1492, 576, 296, 216, 128 };
static __inline__ unsigned short guess_mtu(unsigned short old_mtu) static __inline__ unsigned short guess_mtu(unsigned short old_mtu)
......
...@@ -1413,7 +1413,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, ...@@ -1413,7 +1413,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
* closed. * closed.
*/ */
static unsigned char new_state[16] = { static const unsigned char new_state[16] = {
/* current state: new state: action: */ /* current state: new state: action: */
/* (Invalid) */ TCP_CLOSE, /* (Invalid) */ TCP_CLOSE,
/* TCP_ESTABLISHED */ TCP_FIN_WAIT1 | TCP_ACTION_FIN, /* TCP_ESTABLISHED */ TCP_FIN_WAIT1 | TCP_ACTION_FIN,
......
...@@ -751,7 +751,7 @@ void icmpv6_cleanup(void) ...@@ -751,7 +751,7 @@ void icmpv6_cleanup(void)
inet6_del_protocol(&icmpv6_protocol, IPPROTO_ICMPV6); inet6_del_protocol(&icmpv6_protocol, IPPROTO_ICMPV6);
} }
static struct icmp6_err { static const struct icmp6_err {
int err; int err;
int fatal; int fatal;
} tab_unreach[] = { } tab_unreach[] = {
......
...@@ -1972,7 +1972,7 @@ static int ip6t_get_matches(char *buffer, char **start, off_t offset, int length ...@@ -1972,7 +1972,7 @@ static int ip6t_get_matches(char *buffer, char **start, off_t offset, int length
return pos; return pos;
} }
static struct { char *name; get_info_t *get_info; } ip6t_proc_entry[] = static const struct { char *name; get_info_t *get_info; } ip6t_proc_entry[] =
{ { "ip6_tables_names", ip6t_get_tables }, { { "ip6_tables_names", ip6t_get_tables },
{ "ip6_tables_targets", ip6t_get_targets }, { "ip6_tables_targets", ip6t_get_targets },
{ "ip6_tables_matches", ip6t_get_matches }, { "ip6_tables_matches", ip6t_get_matches },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment