const struct nf_nat_range *range)
 {
        unsigned int h = hash_by_src(tuple);
-       struct nf_conn_nat *nat;
-       struct nf_conn *ct;
-       struct hlist_node *n;
+       const struct nf_conn_nat *nat;
+       const struct nf_conn *ct;
+       const struct hlist_node *n;
 
        rcu_read_lock();
        hlist_for_each_entry_rcu(nat, n, &bysource[h], bysource) {
                struct icmphdr icmp;
                struct iphdr ip;
        } *inside;
-       struct nf_conntrack_l4proto *l4proto;
+       const struct nf_conntrack_l4proto *l4proto;
        struct nf_conntrack_tuple inner, target;
        int hdrlen = ip_hdrlen(skb);
        enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
 
                if (ch < 0x80)
                        *len = ch;
                else {
-                       cnt = (unsigned char) (ch & 0x7F);
+                       cnt = ch & 0x7F;
                        *len = 0;
 
                        while (cnt > 0) {
        int syntax;
 };
 
-static struct snmp_cnv snmp_conv [] =
-{
+static const struct snmp_cnv snmp_conv[] = {
        {ASN1_UNI, ASN1_NUL, SNMP_NULL},
        {ASN1_UNI, ASN1_INT, SNMP_INTEGER},
        {ASN1_UNI, ASN1_OTS, SNMP_OCTETSTR},
                                         unsigned int cls,
                                         unsigned short *syntax)
 {
-       struct snmp_cnv *cnv;
+       const struct snmp_cnv *cnv;
 
        cnv = snmp_conv;
 
                u_int32_t old;
 
                if (debug)
-                       memcpy(&old, (unsigned char *)addr, sizeof(old));
+                       memcpy(&old, addr, sizeof(old));
 
                *addr = map->to;
 
  *
  *****************************************************************************/
 
-static void hex_dump(unsigned char *buf, size_t len)
+static void hex_dump(const unsigned char *buf, size_t len)
 {
        size_t i;
 
        if (cls != ASN1_CTX || con != ASN1_CON)
                return 0;
        if (debug > 1) {
-               unsigned char *pdus[] = {
+               static const unsigned char *const pdus[] = {
                        [SNMP_PDU_GET] = "get",
                        [SNMP_PDU_NEXT] = "get-next",
                        [SNMP_PDU_RESPONSE] = "response",
 {
        int dir = CTINFO2DIR(ctinfo);
        unsigned int ret;
-       struct iphdr *iph = ip_hdr(skb);
-       struct udphdr *udph = (struct udphdr *)((u_int32_t *)iph + iph->ihl);
+       const struct iphdr *iph = ip_hdr(skb);
+       const struct udphdr *udph = (struct udphdr *)((__be32 *)iph + iph->ihl);
 
        /* SNMP replies and originating SNMP traps get mangled */
        if (udph->source == htons(SNMP_PORT) && dir != IP_CT_DIR_REPLY)
 
 #ifdef CONFIG_XFRM
 static void nat_decode_session(struct sk_buff *skb, struct flowi *fl)
 {
-       struct nf_conn *ct;
-       struct nf_conntrack_tuple *t;
+       const struct nf_conn *ct;
+       const struct nf_conntrack_tuple *t;
        enum ip_conntrack_info ctinfo;
        enum ip_conntrack_dir dir;
        unsigned long statusbit;
           int (*okfn)(struct sk_buff *))
 {
 #ifdef CONFIG_XFRM
-       struct nf_conn *ct;
+       const struct nf_conn *ct;
        enum ip_conntrack_info ctinfo;
 #endif
        unsigned int ret;
                const struct net_device *out,
                int (*okfn)(struct sk_buff *))
 {
-       struct nf_conn *ct;
+       const struct nf_conn *ct;
        enum ip_conntrack_info ctinfo;
        unsigned int ret;