[NETFILTER]: x_tables: mark matches and targets __read_mostly
Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
ba9dda3ab5
Коммит
9f15c5302d
|
@ -1140,13 +1140,13 @@ void arpt_unregister_table(struct arpt_table *table)
|
|||
}
|
||||
|
||||
/* The built-in targets: standard (NULL) and error. */
|
||||
static struct arpt_target arpt_standard_target = {
|
||||
static struct arpt_target arpt_standard_target __read_mostly = {
|
||||
.name = ARPT_STANDARD_TARGET,
|
||||
.targetsize = sizeof(int),
|
||||
.family = NF_ARP,
|
||||
};
|
||||
|
||||
static struct arpt_target arpt_error_target = {
|
||||
static struct arpt_target arpt_error_target __read_mostly = {
|
||||
.name = ARPT_ERROR_TARGET,
|
||||
.target = arpt_error,
|
||||
.targetsize = ARPT_FUNCTION_MAXNAMELEN,
|
||||
|
|
|
@ -81,7 +81,7 @@ checkentry(const char *tablename, const void *e, const struct xt_target *target,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct arpt_target arpt_mangle_reg = {
|
||||
static struct arpt_target arpt_mangle_reg __read_mostly = {
|
||||
.name = "mangle",
|
||||
.target = target,
|
||||
.targetsize = sizeof(struct arpt_mangle),
|
||||
|
|
|
@ -2264,7 +2264,7 @@ icmp_checkentry(const char *tablename,
|
|||
}
|
||||
|
||||
/* The built-in targets: standard (NULL) and error. */
|
||||
static struct xt_target ipt_standard_target = {
|
||||
static struct xt_target ipt_standard_target __read_mostly = {
|
||||
.name = IPT_STANDARD_TARGET,
|
||||
.targetsize = sizeof(int),
|
||||
.family = AF_INET,
|
||||
|
@ -2275,7 +2275,7 @@ static struct xt_target ipt_standard_target = {
|
|||
#endif
|
||||
};
|
||||
|
||||
static struct xt_target ipt_error_target = {
|
||||
static struct xt_target ipt_error_target __read_mostly = {
|
||||
.name = IPT_ERROR_TARGET,
|
||||
.target = ipt_error,
|
||||
.targetsize = IPT_FUNCTION_MAXNAMELEN,
|
||||
|
@ -2298,7 +2298,7 @@ static struct nf_sockopt_ops ipt_sockopts = {
|
|||
#endif
|
||||
};
|
||||
|
||||
static struct xt_match icmp_matchstruct = {
|
||||
static struct xt_match icmp_matchstruct __read_mostly = {
|
||||
.name = "icmp",
|
||||
.match = icmp_match,
|
||||
.matchsize = sizeof(struct ipt_icmp),
|
||||
|
|
|
@ -466,7 +466,7 @@ static void destroy(const struct xt_target *target, void *targinfo)
|
|||
nf_ct_l3proto_module_put(target->family);
|
||||
}
|
||||
|
||||
static struct xt_target clusterip_tgt = {
|
||||
static struct xt_target clusterip_tgt __read_mostly = {
|
||||
.name = "CLUSTERIP",
|
||||
.family = AF_INET,
|
||||
.target = target,
|
||||
|
|
|
@ -128,7 +128,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ipt_ecn_reg = {
|
||||
static struct xt_target ipt_ecn_reg __read_mostly = {
|
||||
.name = "ECN",
|
||||
.family = AF_INET,
|
||||
.target = target,
|
||||
|
|
|
@ -463,7 +463,7 @@ static bool ipt_log_checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ipt_log_reg = {
|
||||
static struct xt_target ipt_log_reg __read_mostly = {
|
||||
.name = "LOG",
|
||||
.family = AF_INET,
|
||||
.target = ipt_log_target,
|
||||
|
|
|
@ -169,7 +169,7 @@ static struct notifier_block masq_inet_notifier = {
|
|||
.notifier_call = masq_inet_event,
|
||||
};
|
||||
|
||||
static struct xt_target masquerade = {
|
||||
static struct xt_target masquerade __read_mostly = {
|
||||
.name = "MASQUERADE",
|
||||
.family = AF_INET,
|
||||
.target = masquerade_target,
|
||||
|
|
|
@ -85,7 +85,7 @@ target(struct sk_buff **pskb,
|
|||
return nf_nat_setup_info(ct, &newrange, hooknum);
|
||||
}
|
||||
|
||||
static struct xt_target target_module = {
|
||||
static struct xt_target target_module __read_mostly = {
|
||||
.name = MODULENAME,
|
||||
.family = AF_INET,
|
||||
.target = target,
|
||||
|
|
|
@ -101,7 +101,7 @@ redirect_target(struct sk_buff **pskb,
|
|||
return nf_nat_setup_info(ct, &newrange, hooknum);
|
||||
}
|
||||
|
||||
static struct xt_target redirect_reg = {
|
||||
static struct xt_target redirect_reg __read_mostly = {
|
||||
.name = "REDIRECT",
|
||||
.family = AF_INET,
|
||||
.target = redirect_target,
|
||||
|
|
|
@ -240,7 +240,7 @@ static bool check(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ipt_reject_reg = {
|
||||
static struct xt_target ipt_reject_reg __read_mostly = {
|
||||
.name = "REJECT",
|
||||
.family = AF_INET,
|
||||
.target = reject,
|
||||
|
|
|
@ -161,7 +161,7 @@ same_target(struct sk_buff **pskb,
|
|||
return nf_nat_setup_info(ct, &newrange, hooknum);
|
||||
}
|
||||
|
||||
static struct xt_target same_reg = {
|
||||
static struct xt_target same_reg __read_mostly = {
|
||||
.name = "SAME",
|
||||
.family = AF_INET,
|
||||
.target = same_target,
|
||||
|
|
|
@ -63,7 +63,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ipt_tos_reg = {
|
||||
static struct xt_target ipt_tos_reg __read_mostly = {
|
||||
.name = "TOS",
|
||||
.family = AF_INET,
|
||||
.target = target,
|
||||
|
|
|
@ -80,7 +80,7 @@ static bool ipt_ttl_checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ipt_TTL = {
|
||||
static struct xt_target ipt_TTL __read_mostly = {
|
||||
.name = "TTL",
|
||||
.family = AF_INET,
|
||||
.target = ipt_ttl_target,
|
||||
|
|
|
@ -381,7 +381,7 @@ static int compat_to_user(void __user *dst, void *src)
|
|||
}
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
static struct xt_target ipt_ulog_reg = {
|
||||
static struct xt_target ipt_ulog_reg __read_mostly = {
|
||||
.name = "ULOG",
|
||||
.family = AF_INET,
|
||||
.target = ipt_ulog_target,
|
||||
|
|
|
@ -44,7 +44,7 @@ static bool match(const struct sk_buff *skb,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static struct xt_match addrtype_match = {
|
||||
static struct xt_match addrtype_match __read_mostly = {
|
||||
.name = "addrtype",
|
||||
.family = AF_INET,
|
||||
.match = match,
|
||||
|
|
|
@ -88,7 +88,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match ah_match = {
|
||||
static struct xt_match ah_match __read_mostly = {
|
||||
.name = "ah",
|
||||
.family = AF_INET,
|
||||
.match = match,
|
||||
|
|
|
@ -111,7 +111,7 @@ static bool checkentry(const char *tablename, const void *ip_void,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match ecn_match = {
|
||||
static struct xt_match ecn_match __read_mostly = {
|
||||
.name = "ecn",
|
||||
.family = AF_INET,
|
||||
.match = match,
|
||||
|
|
|
@ -63,7 +63,7 @@ match(const struct sk_buff *skb,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match iprange_match = {
|
||||
static struct xt_match iprange_match __read_mostly = {
|
||||
.name = "iprange",
|
||||
.family = AF_INET,
|
||||
.match = match,
|
||||
|
|
|
@ -68,7 +68,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match owner_match = {
|
||||
static struct xt_match owner_match __read_mostly = {
|
||||
.name = "owner",
|
||||
.family = AF_INET,
|
||||
.match = match,
|
||||
|
|
|
@ -460,7 +460,7 @@ static const struct file_operations recent_fops = {
|
|||
};
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
static struct xt_match recent_match = {
|
||||
static struct xt_match recent_match __read_mostly = {
|
||||
.name = "recent",
|
||||
.family = AF_INET,
|
||||
.match = ipt_recent_match,
|
||||
|
|
|
@ -33,7 +33,7 @@ match(const struct sk_buff *skb,
|
|||
return (ip_hdr(skb)->tos == info->tos) ^ info->invert;
|
||||
}
|
||||
|
||||
static struct xt_match tos_match = {
|
||||
static struct xt_match tos_match __read_mostly = {
|
||||
.name = "tos",
|
||||
.family = AF_INET,
|
||||
.match = match,
|
||||
|
|
|
@ -44,7 +44,7 @@ static bool match(const struct sk_buff *skb,
|
|||
return false;
|
||||
}
|
||||
|
||||
static struct xt_match ttl_match = {
|
||||
static struct xt_match ttl_match __read_mostly = {
|
||||
.name = "ttl",
|
||||
.family = AF_INET,
|
||||
.match = match,
|
||||
|
|
|
@ -228,7 +228,7 @@ int nf_nat_rule_find(struct sk_buff **pskb,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static struct xt_target ipt_snat_reg = {
|
||||
static struct xt_target ipt_snat_reg __read_mostly = {
|
||||
.name = "SNAT",
|
||||
.target = ipt_snat_target,
|
||||
.targetsize = sizeof(struct nf_nat_multi_range_compat),
|
||||
|
@ -238,7 +238,7 @@ static struct xt_target ipt_snat_reg = {
|
|||
.family = AF_INET,
|
||||
};
|
||||
|
||||
static struct xt_target ipt_dnat_reg = {
|
||||
static struct xt_target ipt_dnat_reg __read_mostly = {
|
||||
.name = "DNAT",
|
||||
.target = ipt_dnat_target,
|
||||
.targetsize = sizeof(struct nf_nat_multi_range_compat),
|
||||
|
|
|
@ -1441,13 +1441,13 @@ icmp6_checkentry(const char *tablename,
|
|||
}
|
||||
|
||||
/* The built-in targets: standard (NULL) and error. */
|
||||
static struct xt_target ip6t_standard_target = {
|
||||
static struct xt_target ip6t_standard_target __read_mostly = {
|
||||
.name = IP6T_STANDARD_TARGET,
|
||||
.targetsize = sizeof(int),
|
||||
.family = AF_INET6,
|
||||
};
|
||||
|
||||
static struct xt_target ip6t_error_target = {
|
||||
static struct xt_target ip6t_error_target __read_mostly = {
|
||||
.name = IP6T_ERROR_TARGET,
|
||||
.target = ip6t_error,
|
||||
.targetsize = IP6T_FUNCTION_MAXNAMELEN,
|
||||
|
@ -1464,7 +1464,7 @@ static struct nf_sockopt_ops ip6t_sockopts = {
|
|||
.get = do_ip6t_get_ctl,
|
||||
};
|
||||
|
||||
static struct xt_match icmp6_matchstruct = {
|
||||
static struct xt_match icmp6_matchstruct __read_mostly = {
|
||||
.name = "icmp6",
|
||||
.match = &icmp6_match,
|
||||
.matchsize = sizeof(struct ip6t_icmp),
|
||||
|
|
|
@ -79,7 +79,7 @@ static bool ip6t_hl_checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ip6t_HL = {
|
||||
static struct xt_target ip6t_HL __read_mostly = {
|
||||
.name = "HL",
|
||||
.family = AF_INET6,
|
||||
.target = ip6t_hl_target,
|
||||
|
|
|
@ -477,7 +477,7 @@ static bool ip6t_log_checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ip6t_log_reg = {
|
||||
static struct xt_target ip6t_log_reg __read_mostly = {
|
||||
.name = "LOG",
|
||||
.family = AF_INET6,
|
||||
.target = ip6t_log_target,
|
||||
|
|
|
@ -244,7 +244,7 @@ static bool check(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target ip6t_reject_reg = {
|
||||
static struct xt_target ip6t_reject_reg __read_mostly = {
|
||||
.name = "REJECT",
|
||||
.family = AF_INET6,
|
||||
.target = reject6_target,
|
||||
|
|
|
@ -120,7 +120,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match ah_match = {
|
||||
static struct xt_match ah_match __read_mostly = {
|
||||
.name = "ah",
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
|
|
|
@ -62,7 +62,7 @@ match(const struct sk_buff *skb,
|
|||
return false;
|
||||
}
|
||||
|
||||
static struct xt_match eui64_match = {
|
||||
static struct xt_match eui64_match __read_mostly = {
|
||||
.name = "eui64",
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
|
|
|
@ -137,7 +137,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match frag_match = {
|
||||
static struct xt_match frag_match __read_mostly = {
|
||||
.name = "frag",
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
|
|
|
@ -193,7 +193,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match opts_match[] = {
|
||||
static struct xt_match opts_match[] __read_mostly = {
|
||||
{
|
||||
.name = "hbh",
|
||||
.family = AF_INET6,
|
||||
|
|
|
@ -49,7 +49,7 @@ static bool match(const struct sk_buff *skb,
|
|||
return false;
|
||||
}
|
||||
|
||||
static struct xt_match hl_match = {
|
||||
static struct xt_match hl_match __read_mostly = {
|
||||
.name = "hl",
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
|
|
|
@ -141,7 +141,7 @@ ipv6header_checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match ip6t_ipv6header_match = {
|
||||
static struct xt_match ip6t_ipv6header_match __read_mostly = {
|
||||
.name = "ipv6header",
|
||||
.family = AF_INET6,
|
||||
.match = &ipv6header_match,
|
||||
|
|
|
@ -89,7 +89,7 @@ mh_checkentry(const char *tablename,
|
|||
return !(mhinfo->invflags & ~IP6T_MH_INV_MASK);
|
||||
}
|
||||
|
||||
static struct xt_match mh_match = {
|
||||
static struct xt_match mh_match __read_mostly = {
|
||||
.name = "mh",
|
||||
.family = AF_INET6,
|
||||
.checkentry = mh_checkentry,
|
||||
|
|
|
@ -68,7 +68,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match owner_match = {
|
||||
static struct xt_match owner_match __read_mostly = {
|
||||
.name = "owner",
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
|
|
|
@ -224,7 +224,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match rt_match = {
|
||||
static struct xt_match rt_match __read_mostly = {
|
||||
.name = "rt",
|
||||
.family = AF_INET6,
|
||||
.match = match,
|
||||
|
|
|
@ -39,7 +39,7 @@ target(struct sk_buff **pskb,
|
|||
return XT_CONTINUE;
|
||||
}
|
||||
|
||||
static struct xt_target xt_classify_target[] = {
|
||||
static struct xt_target xt_classify_target[] __read_mostly = {
|
||||
{
|
||||
.family = AF_INET,
|
||||
.name = "CLASSIFY",
|
||||
|
|
|
@ -142,7 +142,7 @@ static int compat_to_user(void __user *dst, void *src)
|
|||
}
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
static struct xt_target xt_connmark_target[] = {
|
||||
static struct xt_target xt_connmark_target[] __read_mostly = {
|
||||
{
|
||||
.name = "CONNMARK",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -115,7 +115,7 @@ destroy(const struct xt_target *target, void *targinfo)
|
|||
nf_ct_l3proto_module_put(target->family);
|
||||
}
|
||||
|
||||
static struct xt_target xt_connsecmark_target[] = {
|
||||
static struct xt_target xt_connsecmark_target[] __read_mostly = {
|
||||
{
|
||||
.name = "CONNSECMARK",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -81,7 +81,7 @@ static bool checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target xt_dscp_target[] = {
|
||||
static struct xt_target xt_dscp_target[] __read_mostly = {
|
||||
{
|
||||
.name = "DSCP",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -133,7 +133,7 @@ static int compat_to_user_v1(void __user *dst, void *src)
|
|||
}
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
static struct xt_target xt_mark_target[] = {
|
||||
static struct xt_target xt_mark_target[] __read_mostly = {
|
||||
{
|
||||
.name = "MARK",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -52,7 +52,7 @@ nflog_checkentry(const char *tablename, const void *entry,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target xt_nflog_target[] = {
|
||||
static struct xt_target xt_nflog_target[] __read_mostly = {
|
||||
{
|
||||
.name = "NFLOG",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -36,7 +36,7 @@ target(struct sk_buff **pskb,
|
|||
return NF_QUEUE_NR(tinfo->queuenum);
|
||||
}
|
||||
|
||||
static struct xt_target xt_nfqueue_target[] = {
|
||||
static struct xt_target xt_nfqueue_target[] __read_mostly = {
|
||||
{
|
||||
.name = "NFQUEUE",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -33,7 +33,7 @@ target(struct sk_buff **pskb,
|
|||
return XT_CONTINUE;
|
||||
}
|
||||
|
||||
static struct xt_target xt_notrack_target[] = {
|
||||
static struct xt_target xt_notrack_target[] __read_mostly = {
|
||||
{
|
||||
.name = "NOTRACK",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -109,7 +109,7 @@ static bool checkentry(const char *tablename, const void *entry,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_target xt_secmark_target[] = {
|
||||
static struct xt_target xt_secmark_target[] __read_mostly = {
|
||||
{
|
||||
.name = "SECMARK",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -259,7 +259,7 @@ xt_tcpmss_checkentry6(const char *tablename,
|
|||
}
|
||||
#endif
|
||||
|
||||
static struct xt_target xt_tcpmss_reg[] = {
|
||||
static struct xt_target xt_tcpmss_reg[] __read_mostly = {
|
||||
{
|
||||
.family = AF_INET,
|
||||
.name = "TCPMSS",
|
||||
|
|
|
@ -21,7 +21,7 @@ target(struct sk_buff **pskb,
|
|||
return XT_CONTINUE;
|
||||
}
|
||||
|
||||
static struct xt_target xt_trace_target[] = {
|
||||
static struct xt_target xt_trace_target[] __read_mostly = {
|
||||
{
|
||||
.name = "TRACE",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -29,7 +29,7 @@ match(const struct sk_buff *skb,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match xt_comment_match[] = {
|
||||
static struct xt_match xt_comment_match[] __read_mostly = {
|
||||
{
|
||||
.name = "comment",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -128,7 +128,7 @@ destroy(const struct xt_match *match, void *matchinfo)
|
|||
nf_ct_l3proto_module_put(match->family);
|
||||
}
|
||||
|
||||
static struct xt_match xt_connbytes_match[] = {
|
||||
static struct xt_match xt_connbytes_match[] __read_mostly = {
|
||||
{
|
||||
.name = "connbytes",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -109,7 +109,7 @@ static int compat_to_user(void __user *dst, void *src)
|
|||
}
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
static struct xt_match xt_connmark_match[] = {
|
||||
static struct xt_match xt_connmark_match[] __read_mostly = {
|
||||
{
|
||||
.name = "connmark",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -183,7 +183,7 @@ static int compat_to_user(void __user *dst, void *src)
|
|||
}
|
||||
#endif
|
||||
|
||||
static struct xt_match conntrack_match = {
|
||||
static struct xt_match conntrack_match __read_mostly = {
|
||||
.name = "conntrack",
|
||||
.match = match,
|
||||
.checkentry = checkentry,
|
||||
|
|
|
@ -140,7 +140,7 @@ checkentry(const char *tablename,
|
|||
&& !(info->invflags & ~info->flags);
|
||||
}
|
||||
|
||||
static struct xt_match xt_dccp_match[] = {
|
||||
static struct xt_match xt_dccp_match[] __read_mostly = {
|
||||
{
|
||||
.name = "dccp",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -68,7 +68,7 @@ static bool checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match xt_dscp_match[] = {
|
||||
static struct xt_match xt_dscp_match[] __read_mostly = {
|
||||
{
|
||||
.name = "dscp",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -91,7 +91,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match xt_esp_match[] = {
|
||||
static struct xt_match xt_esp_match[] __read_mostly = {
|
||||
{
|
||||
.name = "esp",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -578,7 +578,7 @@ static int compat_to_user(void __user *dst, void *src)
|
|||
}
|
||||
#endif
|
||||
|
||||
static struct xt_match xt_hashlimit[] = {
|
||||
static struct xt_match xt_hashlimit[] __read_mostly = {
|
||||
{
|
||||
.name = "hashlimit",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -99,7 +99,7 @@ destroy(const struct xt_match *match, void *matchinfo)
|
|||
nf_ct_l3proto_module_put(match->family);
|
||||
}
|
||||
|
||||
static struct xt_match xt_helper_match[] = {
|
||||
static struct xt_match xt_helper_match[] __read_mostly = {
|
||||
{
|
||||
.name = "helper",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -53,7 +53,7 @@ match6(const struct sk_buff *skb,
|
|||
return (pktlen >= info->min && pktlen <= info->max) ^ info->invert;
|
||||
}
|
||||
|
||||
static struct xt_match xt_length_match[] = {
|
||||
static struct xt_match xt_length_match[] __read_mostly = {
|
||||
{
|
||||
.name = "length",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -173,7 +173,7 @@ static int compat_to_user(void __user *dst, void *src)
|
|||
}
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
static struct xt_match xt_limit_match[] = {
|
||||
static struct xt_match xt_limit_match[] __read_mostly = {
|
||||
{
|
||||
.name = "limit",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -44,7 +44,7 @@ match(const struct sk_buff *skb,
|
|||
^ info->invert);
|
||||
}
|
||||
|
||||
static struct xt_match xt_mac_match[] = {
|
||||
static struct xt_match xt_mac_match[] __read_mostly = {
|
||||
{
|
||||
.name = "mac",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -81,7 +81,7 @@ static int compat_to_user(void __user *dst, void *src)
|
|||
}
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
static struct xt_match xt_mark_match[] = {
|
||||
static struct xt_match xt_mark_match[] __read_mostly = {
|
||||
{
|
||||
.name = "mark",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -228,7 +228,7 @@ checkentry6_v1(const char *tablename,
|
|||
multiinfo->count);
|
||||
}
|
||||
|
||||
static struct xt_match xt_multiport_match[] = {
|
||||
static struct xt_match xt_multiport_match[] __read_mostly = {
|
||||
{
|
||||
.name = "multiport",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -125,7 +125,7 @@ checkentry(const char *tablename,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match xt_physdev_match[] = {
|
||||
static struct xt_match xt_physdev_match[] __read_mostly = {
|
||||
{
|
||||
.name = "physdev",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -43,7 +43,7 @@ static bool match(const struct sk_buff *skb,
|
|||
return (type == info->pkttype) ^ info->invert;
|
||||
}
|
||||
|
||||
static struct xt_match xt_pkttype_match[] = {
|
||||
static struct xt_match xt_pkttype_match[] __read_mostly = {
|
||||
{
|
||||
.name = "pkttype",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -164,7 +164,7 @@ static bool checkentry(const char *tablename, const void *ip_void,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match xt_policy_match[] = {
|
||||
static struct xt_match xt_policy_match[] __read_mostly = {
|
||||
{
|
||||
.name = "policy",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -53,7 +53,7 @@ checkentry(const char *tablename, const void *entry,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match xt_quota_match[] = {
|
||||
static struct xt_match xt_quota_match[] __read_mostly = {
|
||||
{
|
||||
.name = "quota",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -37,7 +37,7 @@ match(const struct sk_buff *skb,
|
|||
return (info->id == (dst->tclassid & info->mask)) ^ info->invert;
|
||||
}
|
||||
|
||||
static struct xt_match realm_match = {
|
||||
static struct xt_match realm_match __read_mostly = {
|
||||
.name = "realm",
|
||||
.match = match,
|
||||
.matchsize = sizeof(struct xt_realm_info),
|
||||
|
|
|
@ -172,7 +172,7 @@ checkentry(const char *tablename,
|
|||
| SCTP_CHUNK_MATCH_ONLY)));
|
||||
}
|
||||
|
||||
static struct xt_match xt_sctp_match[] = {
|
||||
static struct xt_match xt_sctp_match[] __read_mostly = {
|
||||
{
|
||||
.name = "sctp",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -64,7 +64,7 @@ destroy(const struct xt_match *match, void *matchinfo)
|
|||
nf_ct_l3proto_module_put(match->family);
|
||||
}
|
||||
|
||||
static struct xt_match xt_state_match[] = {
|
||||
static struct xt_match xt_state_match[] __read_mostly = {
|
||||
{
|
||||
.name = "state",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -66,7 +66,7 @@ checkentry(const char *tablename, const void *entry,
|
|||
return true;
|
||||
}
|
||||
|
||||
static struct xt_match xt_statistic_match[] = {
|
||||
static struct xt_match xt_statistic_match[] __read_mostly = {
|
||||
{
|
||||
.name = "statistic",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -73,7 +73,7 @@ static void destroy(const struct xt_match *match, void *matchinfo)
|
|||
textsearch_destroy(STRING_TEXT_PRIV(matchinfo)->config);
|
||||
}
|
||||
|
||||
static struct xt_match xt_string_match[] = {
|
||||
static struct xt_match xt_string_match[] __read_mostly = {
|
||||
{
|
||||
.name = "string",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -81,7 +81,7 @@ dropit:
|
|||
return false;
|
||||
}
|
||||
|
||||
static struct xt_match xt_tcpmss_match[] = {
|
||||
static struct xt_match xt_tcpmss_match[] __read_mostly = {
|
||||
{
|
||||
.name = "tcpmss",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -194,7 +194,7 @@ udp_checkentry(const char *tablename,
|
|||
return !(udpinfo->invflags & ~XT_UDP_INV_MASK);
|
||||
}
|
||||
|
||||
static struct xt_match xt_tcpudp_match[] = {
|
||||
static struct xt_match xt_tcpudp_match[] __read_mostly = {
|
||||
{
|
||||
.name = "tcp",
|
||||
.family = AF_INET,
|
||||
|
|
|
@ -99,7 +99,7 @@ static bool u32_match(const struct sk_buff *skb,
|
|||
return ret ^ data->invert;
|
||||
}
|
||||
|
||||
static struct xt_match u32_reg[] = {
|
||||
static struct xt_match u32_reg[] __read_mostly = {
|
||||
{
|
||||
.name = "u32",
|
||||
.family = AF_INET,
|
||||
|
|
Загрузка…
Ссылка в новой задаче