[NETFILTER]: x_tables: mark matches and targets __read_mostly
authorPatrick McHardy <kaber@trash.net>
Sun, 8 Jul 2007 05:22:02 +0000 (22:22 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 11 Jul 2007 05:17:15 +0000 (22:17 -0700)
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
73 files changed:
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/arpt_mangle.c
net/ipv4/netfilter/ip_tables.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/netfilter/ipt_ECN.c
net/ipv4/netfilter/ipt_LOG.c
net/ipv4/netfilter/ipt_MASQUERADE.c
net/ipv4/netfilter/ipt_NETMAP.c
net/ipv4/netfilter/ipt_REDIRECT.c
net/ipv4/netfilter/ipt_REJECT.c
net/ipv4/netfilter/ipt_SAME.c
net/ipv4/netfilter/ipt_TOS.c
net/ipv4/netfilter/ipt_TTL.c
net/ipv4/netfilter/ipt_ULOG.c
net/ipv4/netfilter/ipt_addrtype.c
net/ipv4/netfilter/ipt_ah.c
net/ipv4/netfilter/ipt_ecn.c
net/ipv4/netfilter/ipt_iprange.c
net/ipv4/netfilter/ipt_owner.c
net/ipv4/netfilter/ipt_recent.c
net/ipv4/netfilter/ipt_tos.c
net/ipv4/netfilter/ipt_ttl.c
net/ipv4/netfilter/nf_nat_rule.c
net/ipv6/netfilter/ip6_tables.c
net/ipv6/netfilter/ip6t_HL.c
net/ipv6/netfilter/ip6t_LOG.c
net/ipv6/netfilter/ip6t_REJECT.c
net/ipv6/netfilter/ip6t_ah.c
net/ipv6/netfilter/ip6t_eui64.c
net/ipv6/netfilter/ip6t_frag.c
net/ipv6/netfilter/ip6t_hbh.c
net/ipv6/netfilter/ip6t_hl.c
net/ipv6/netfilter/ip6t_ipv6header.c
net/ipv6/netfilter/ip6t_mh.c
net/ipv6/netfilter/ip6t_owner.c
net/ipv6/netfilter/ip6t_rt.c
net/netfilter/xt_CLASSIFY.c
net/netfilter/xt_CONNMARK.c
net/netfilter/xt_CONNSECMARK.c
net/netfilter/xt_DSCP.c
net/netfilter/xt_MARK.c
net/netfilter/xt_NFLOG.c
net/netfilter/xt_NFQUEUE.c
net/netfilter/xt_NOTRACK.c
net/netfilter/xt_SECMARK.c
net/netfilter/xt_TCPMSS.c
net/netfilter/xt_TRACE.c
net/netfilter/xt_comment.c
net/netfilter/xt_connbytes.c
net/netfilter/xt_connmark.c
net/netfilter/xt_conntrack.c
net/netfilter/xt_dccp.c
net/netfilter/xt_dscp.c
net/netfilter/xt_esp.c
net/netfilter/xt_hashlimit.c
net/netfilter/xt_helper.c
net/netfilter/xt_length.c
net/netfilter/xt_limit.c
net/netfilter/xt_mac.c
net/netfilter/xt_mark.c
net/netfilter/xt_multiport.c
net/netfilter/xt_physdev.c
net/netfilter/xt_pkttype.c
net/netfilter/xt_policy.c
net/netfilter/xt_quota.c
net/netfilter/xt_realm.c
net/netfilter/xt_sctp.c
net/netfilter/xt_state.c
net/netfilter/xt_statistic.c
net/netfilter/xt_string.c
net/netfilter/xt_tcpmss.c
net/netfilter/xt_tcpudp.c
net/netfilter/xt_u32.c

index 1d75a5c..e981232 100644 (file)
@@ -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,
index 497a16e..c4bdab4 100644 (file)
@@ -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),
index 650ab52..2ba5bd9 100644 (file)
@@ -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),
index 5de13b4..1cef3b0 100644 (file)
@@ -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,
index a647c1d..f1253bd 100644 (file)
@@ -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,
index bcc43a6..9bfce61 100644 (file)
@@ -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,
index f136ef7..bc033e0 100644 (file)
@@ -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,
index a902c71..0a7ce15 100644 (file)
@@ -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,
index 2a04103..61e1e47 100644 (file)
@@ -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,
index 90f7b70..dd5432c 100644 (file)
@@ -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,
index 3649fab..3a0d7da 100644 (file)
@@ -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,
index ac43e86..25f5d0b 100644 (file)
@@ -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,
index 737830b..2b54e7b 100644 (file)
@@ -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,
index 5b25ca6..226750d 100644 (file)
@@ -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,
index abea446..59f01f7 100644 (file)
@@ -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,
index 49d503c..61b017f 100644 (file)
@@ -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,
index 3129e31..d6925c6 100644 (file)
@@ -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,
index 854281c..6a3a033 100644 (file)
@@ -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,
index deea4b8..b14e77d 100644 (file)
@@ -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,
index 68f7181..a7b14f2 100644 (file)
@@ -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,
index 67699ae..e740441 100644 (file)
@@ -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,
index 59a644d..a439900 100644 (file)
@@ -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,
index ea1a07c..080393a 100644 (file)
@@ -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),
index 4f93b79..254c769 100644 (file)
@@ -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),
index 33c4cb8..ad4d943 100644 (file)
@@ -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,
index 996168d..540bf14 100644 (file)
@@ -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,
index 0fa1f2c..14008dc 100644 (file)
@@ -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,
index fbf3d77..a9fe2aa 100644 (file)
@@ -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,
index 2af99fc..34ba150 100644 (file)
@@ -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,
index 65482af..bb1cfa8 100644 (file)
@@ -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,
index 8eecac1..6247d4c 100644 (file)
@@ -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,
index ddee088..ca29ec0 100644 (file)
@@ -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,
index ca020ce..2c65c2f 100644 (file)
@@ -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,
index e94fdd8..0fa7140 100644 (file)
@@ -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,
index d2bf320..6036613 100644 (file)
@@ -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,
index f86fdcd..549deea 100644 (file)
@@ -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,
index 3088483..5194285 100644 (file)
@@ -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",
index 4284a59..5a00c54 100644 (file)
@@ -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,
index 8d5e154..63d7313 100644 (file)
@@ -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,
index ed6b524..798ab73 100644 (file)
@@ -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,
index 6b7369f..f30fe0b 100644 (file)
@@ -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,
index 20e55d5..d3594c7 100644 (file)
@@ -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,
index 201155b..13f59f3 100644 (file)
@@ -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,
index 5085fb3..b7d6312 100644 (file)
@@ -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,
index f3e78c5..c83779a 100644 (file)
@@ -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,
index 6ae6df9..d40f7e4 100644 (file)
@@ -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",
index b82fc46..4df2ded 100644 (file)
@@ -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,
index aa9503f..64bcdb0 100644 (file)
@@ -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,
index d9b2e75..dd4d79b 100644 (file)
@@ -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,
index 3a6e16d..e73fa9b 100644 (file)
@@ -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,
index 9e3ec31..ca4b69f 100644 (file)
@@ -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,
index f07a68d..83224ec 100644 (file)
@@ -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,
index 35cabca..dde6d66 100644 (file)
@@ -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,
index 1a6ae8a..b11378e 100644 (file)
@@ -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,
index 094da6e..5a6ea9b 100644 (file)
@@ -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,
index 047d004..d03acb0 100644 (file)
@@ -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,
index ea4880b..3dad173 100644 (file)
@@ -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,
index b042419..4fcca79 100644 (file)
@@ -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,
index 28ec08e..00490d7 100644 (file)
@@ -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,
index b8ab794..c02a7f8 100644 (file)
@@ -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,
index 3d69d62..e8ae102 100644 (file)
@@ -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,
index 467b2dc..f47cab7 100644 (file)
@@ -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,
index e4c420b..a52925f 100644 (file)
@@ -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,
index 5ab6d71..6d6d3b7 100644 (file)
@@ -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,
index feb130d..dae9744 100644 (file)
@@ -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,
index 44b807d..cc3e76d 100644 (file)
@@ -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),
index fefc846..c002153 100644 (file)
@@ -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,
index 5b9c59a..e0a528d 100644 (file)
@@ -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,
index 3da4978..4089dae 100644 (file)
@@ -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,
index ab761b1..8641334 100644 (file)
@@ -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,
index e9bfd3d..cd5f6d7 100644 (file)
@@ -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,
index 5cb345a..ab7d845 100644 (file)
@@ -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,
index 0706875..04b677a 100644 (file)
@@ -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,