netfilter: nf_tables: convert expressions to u32 register pointers
[deliverable/linux.git] / net / netfilter / nft_meta.c
index 3f11c0b4b3d021561cf5c25ed8b47c1ac8d57c39..a6da806f207bec07eada7374b641b00417c89c36 100644 (file)
@@ -31,56 +31,56 @@ void nft_meta_get_eval(const struct nft_expr *expr,
        const struct nft_meta *priv = nft_expr_priv(expr);
        const struct sk_buff *skb = pkt->skb;
        const struct net_device *in = pkt->in, *out = pkt->out;
-       struct nft_data *dest = &regs->data[priv->dreg];
+       u32 *dest = &regs->data[priv->dreg].data[0];
 
        switch (priv->key) {
        case NFT_META_LEN:
-               dest->data[0] = skb->len;
+               *dest = skb->len;
                break;
        case NFT_META_PROTOCOL:
-               *(__be16 *)dest->data = skb->protocol;
+               *(__be16 *)dest = skb->protocol;
                break;
        case NFT_META_NFPROTO:
-               dest->data[0] = pkt->ops->pf;
+               *dest = pkt->ops->pf;
                break;
        case NFT_META_L4PROTO:
-               dest->data[0] = pkt->tprot;
+               *dest = pkt->tprot;
                break;
        case NFT_META_PRIORITY:
-               dest->data[0] = skb->priority;
+               *dest = skb->priority;
                break;
        case NFT_META_MARK:
-               dest->data[0] = skb->mark;
+               *dest = skb->mark;
                break;
        case NFT_META_IIF:
                if (in == NULL)
                        goto err;
-               dest->data[0] = in->ifindex;
+               *dest = in->ifindex;
                break;
        case NFT_META_OIF:
                if (out == NULL)
                        goto err;
-               dest->data[0] = out->ifindex;
+               *dest = out->ifindex;
                break;
        case NFT_META_IIFNAME:
                if (in == NULL)
                        goto err;
-               strncpy((char *)dest->data, in->name, sizeof(dest->data));
+               strncpy((char *)dest, in->name, IFNAMSIZ);
                break;
        case NFT_META_OIFNAME:
                if (out == NULL)
                        goto err;
-               strncpy((char *)dest->data, out->name, sizeof(dest->data));
+               strncpy((char *)dest, out->name, IFNAMSIZ);
                break;
        case NFT_META_IIFTYPE:
                if (in == NULL)
                        goto err;
-               *(u16 *)dest->data = in->type;
+               *(u16 *)dest = in->type;
                break;
        case NFT_META_OIFTYPE:
                if (out == NULL)
                        goto err;
-               *(u16 *)dest->data = out->type;
+               *(u16 *)dest = out->type;
                break;
        case NFT_META_SKUID:
                if (skb->sk == NULL || !sk_fullsock(skb->sk))
@@ -93,8 +93,7 @@ void nft_meta_get_eval(const struct nft_expr *expr,
                        goto err;
                }
 
-               dest->data[0] =
-                       from_kuid_munged(&init_user_ns,
+               *dest = from_kuid_munged(&init_user_ns,
                                skb->sk->sk_socket->file->f_cred->fsuid);
                read_unlock_bh(&skb->sk->sk_callback_lock);
                break;
@@ -108,8 +107,7 @@ void nft_meta_get_eval(const struct nft_expr *expr,
                        read_unlock_bh(&skb->sk->sk_callback_lock);
                        goto err;
                }
-               dest->data[0] =
-                       from_kgid_munged(&init_user_ns,
+               *dest = from_kgid_munged(&init_user_ns,
                                 skb->sk->sk_socket->file->f_cred->fsgid);
                read_unlock_bh(&skb->sk->sk_callback_lock);
                break;
@@ -119,33 +117,33 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 
                if (dst == NULL)
                        goto err;
-               dest->data[0] = dst->tclassid;
+               *dest = dst->tclassid;
                break;
        }
 #endif
 #ifdef CONFIG_NETWORK_SECMARK
        case NFT_META_SECMARK:
-               dest->data[0] = skb->secmark;
+               *dest = skb->secmark;
                break;
 #endif
        case NFT_META_PKTTYPE:
                if (skb->pkt_type != PACKET_LOOPBACK) {
-                       dest->data[0] = skb->pkt_type;
+                       *dest = skb->pkt_type;
                        break;
                }
 
                switch (pkt->ops->pf) {
                case NFPROTO_IPV4:
                        if (ipv4_is_multicast(ip_hdr(skb)->daddr))
-                               dest->data[0] = PACKET_MULTICAST;
+                               *dest = PACKET_MULTICAST;
                        else
-                               dest->data[0] = PACKET_BROADCAST;
+                               *dest = PACKET_BROADCAST;
                        break;
                case NFPROTO_IPV6:
                        if (ipv6_hdr(skb)->daddr.s6_addr[0] == 0xFF)
-                               dest->data[0] = PACKET_MULTICAST;
+                               *dest = PACKET_MULTICAST;
                        else
-                               dest->data[0] = PACKET_BROADCAST;
+                               *dest = PACKET_BROADCAST;
                        break;
                default:
                        WARN_ON(1);
@@ -153,22 +151,22 @@ void nft_meta_get_eval(const struct nft_expr *expr,
                }
                break;
        case NFT_META_CPU:
-               dest->data[0] = raw_smp_processor_id();
+               *dest = raw_smp_processor_id();
                break;
        case NFT_META_IIFGROUP:
                if (in == NULL)
                        goto err;
-               dest->data[0] = in->group;
+               *dest = in->group;
                break;
        case NFT_META_OIFGROUP:
                if (out == NULL)
                        goto err;
-               dest->data[0] = out->group;
+               *dest = out->group;
                break;
        case NFT_META_CGROUP:
                if (skb->sk == NULL || !sk_fullsock(skb->sk))
                        goto err;
-               dest->data[0] = skb->sk->sk_classid;
+               *dest = skb->sk->sk_classid;
                break;
        default:
                WARN_ON(1);
This page took 0.028565 seconds and 5 git commands to generate.