rhel: Enable DHCP in redhat network scripts.
[openvswitch] / datapath / actions.c
index b430090cb75adc891bd7049954e252eec3360011..824791d1fa0285c37c536ba290e8b3ef778e6149 100644 (file)
@@ -50,8 +50,7 @@ static int make_writable(struct sk_buff *skb, int write_len)
 /* remove VLAN header from packet and update csum accrodingly. */
 static int __pop_vlan_tci(struct sk_buff *skb, __be16 *current_tci)
 {
-       struct ethhdr *eh;
-       struct vlan_ethhdr *veth;
+       struct vlan_hdr *vhdr;
        int err;
 
        err = make_writable(skb, VLAN_ETH_HLEN);
@@ -62,15 +61,15 @@ static int __pop_vlan_tci(struct sk_buff *skb, __be16 *current_tci)
                skb->csum = csum_sub(skb->csum, csum_partial(skb->data
                                        + ETH_HLEN, VLAN_HLEN, 0));
 
-       veth = (struct vlan_ethhdr *) skb->data;
-       *current_tci = veth->h_vlan_TCI;
+       vhdr = (struct vlan_hdr *)(skb->data + ETH_HLEN);
+       *current_tci = vhdr->h_vlan_TCI;
 
        memmove(skb->data + VLAN_HLEN, skb->data, 2 * ETH_ALEN);
+       __skb_pull(skb, VLAN_HLEN);
 
-       eh = (struct ethhdr *)__skb_pull(skb, VLAN_HLEN);
-
-       skb->protocol = eh->h_proto;
+       vlan_set_encap_proto(skb, vhdr);
        skb->mac_header += VLAN_HLEN;
+       skb_reset_mac_len(skb);
 
        return 0;
 }
@@ -255,7 +254,7 @@ static int do_output(struct datapath *dp, struct sk_buff *skb, int out_port)
                return -ENODEV;
        }
 
-       vport_send(vport, skb);
+       ovs_vport_send(vport, skb);
        return 0;
 }
 
@@ -284,7 +283,7 @@ static int output_userspace(struct datapath *dp, struct sk_buff *skb,
                }
        }
 
-       return dp_upcall(dp, skb, &upcall);
+       return ovs_dp_upcall(dp, skb, &upcall);
 }
 
 static int sample(struct datapath *dp, struct sk_buff *skb,
@@ -427,13 +426,13 @@ static int loop_suppress(struct datapath *dp, struct sw_flow_actions *actions)
 {
        if (net_ratelimit())
                pr_warn("%s: flow looped %d times, dropping\n",
-                               dp_name(dp), MAX_LOOPS);
+                               ovs_dp_name(dp), MAX_LOOPS);
        actions->actions_len = 0;
        return -ELOOP;
 }
 
 /* Execute a list of actions against 'skb'. */
-int execute_actions(struct datapath *dp, struct sk_buff *skb)
+int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb)
 {
        struct sw_flow_actions *acts = rcu_dereference(OVS_CB(skb)->flow->sf_acts);
        struct loop_counter *loop;