projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rhel: Enable DHCP in redhat network scripts.
[openvswitch]
/
datapath
/
actions.c
diff --git
a/datapath/actions.c
b/datapath/actions.c
index b430090cb75adc891bd7049954e252eec3360011..824791d1fa0285c37c536ba290e8b3ef778e6149 100644
(file)
--- a/
datapath/actions.c
+++ b/
datapath/actions.c
@@
-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)
{
/* 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);
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));
skb->csum = csum_sub(skb->csum, csum_partial(skb->data
+ ETH_HLEN, VLAN_HLEN, 0));
- v
eth = (struct vlan_ethhdr *) skb->data
;
- *current_tci = v
eth
->h_vlan_TCI;
+ v
hdr = (struct vlan_hdr *)(skb->data + ETH_HLEN)
;
+ *current_tci = v
hdr
->h_vlan_TCI;
memmove(skb->data + VLAN_HLEN, skb->data, 2 * ETH_ALEN);
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->mac_header += VLAN_HLEN;
+ skb_reset_mac_len(skb);
return 0;
}
return 0;
}
@@
-255,7
+254,7
@@
static int do_output(struct datapath *dp, struct sk_buff *skb, int out_port)
return -ENODEV;
}
return -ENODEV;
}
- vport_send(vport, skb);
+
ovs_
vport_send(vport, skb);
return 0;
}
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,
}
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",
{
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'. */
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;
{
struct sw_flow_actions *acts = rcu_dereference(OVS_CB(skb)->flow->sf_acts);
struct loop_counter *loop;