int             route_key_size;
 };
 
-extern struct nf_afinfo *nf_afinfo[];
-static inline struct nf_afinfo *nf_get_afinfo(unsigned short family)
+extern const struct nf_afinfo *nf_afinfo[NPROTO];
+static inline const struct nf_afinfo *nf_get_afinfo(unsigned short family)
 {
        return rcu_dereference(nf_afinfo[family]);
 }
 nf_checksum(struct sk_buff *skb, unsigned int hook, unsigned int dataoff,
            u_int8_t protocol, unsigned short family)
 {
-       struct nf_afinfo *afinfo;
+       const struct nf_afinfo *afinfo;
        __sum16 csum = 0;
 
        rcu_read_lock();
        return csum;
 }
 
-extern int nf_register_afinfo(struct nf_afinfo *afinfo);
-extern void nf_unregister_afinfo(struct nf_afinfo *afinfo);
+extern int nf_register_afinfo(const struct nf_afinfo *afinfo);
+extern void nf_unregister_afinfo(const struct nf_afinfo *afinfo);
 
 #include <net/flow.h>
 extern void (*ip_nat_decode_session)(struct sk_buff *, struct flowi *);
 
        return ip_route_output_key((struct rtable **)dst, fl);
 }
 
-static struct nf_afinfo nf_ip_afinfo = {
+static const struct nf_afinfo nf_ip_afinfo = {
        .family         = AF_INET,
        .checksum       = nf_ip_checksum,
        .route          = nf_ip_route,
 
 
 EXPORT_SYMBOL(nf_ip6_checksum);
 
-static struct nf_afinfo nf_ip6_afinfo = {
+static const struct nf_afinfo nf_ip6_afinfo = {
        .family         = AF_INET6,
        .checksum       = nf_ip6_checksum,
        .route          = nf_ip6_route,
 
 
 static DEFINE_MUTEX(afinfo_mutex);
 
-struct nf_afinfo *nf_afinfo[NPROTO] __read_mostly;
+const struct nf_afinfo *nf_afinfo[NPROTO] __read_mostly;
 EXPORT_SYMBOL(nf_afinfo);
 
-int nf_register_afinfo(struct nf_afinfo *afinfo)
+int nf_register_afinfo(const struct nf_afinfo *afinfo)
 {
        int err;
 
 }
 EXPORT_SYMBOL_GPL(nf_register_afinfo);
 
-void nf_unregister_afinfo(struct nf_afinfo *afinfo)
+void nf_unregister_afinfo(const struct nf_afinfo *afinfo)
 {
        mutex_lock(&afinfo_mutex);
        rcu_assign_pointer(nf_afinfo[afinfo->family], NULL);
 
                                 union nf_conntrack_address *dst,
                                 int family)
 {
-       struct nf_afinfo *afinfo;
+       const struct nf_afinfo *afinfo;
        struct flowi fl1, fl2;
        int ret = 0;
 
 
        struct net_device *physindev;
        struct net_device *physoutdev;
 #endif
-       struct nf_afinfo *afinfo;
+       const struct nf_afinfo *afinfo;
        const struct nf_queue_handler *qh;
 
        /* QUEUE == DROP if noone is waiting, to be safe. */
 {
        struct sk_buff *skb = entry->skb;
        struct list_head *elem = &entry->elem->list;
-       struct nf_afinfo *afinfo;
+       const struct nf_afinfo *afinfo;
 
        rcu_read_lock();