git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
datapath: handle recirculation loop detection
[sliver-openvswitch.git]
/
datapath
/
datapath.c
diff --git
a/datapath/datapath.c
b/datapath/datapath.c
index
10706f5
..
0611dad
100644
(file)
--- a/
datapath/datapath.c
+++ b/
datapath/datapath.c
@@
-241,7
+241,8
@@
void ovs_dp_detach_port(struct vport *p)
}
void ovs_dp_process_packet_with_key(struct sk_buff *skb,
}
void ovs_dp_process_packet_with_key(struct sk_buff *skb,
- struct sw_flow_key *pkt_key)
+ struct sw_flow_key *pkt_key,
+ bool recirc)
{
const struct vport *p = OVS_CB(skb)->input_vport;
struct datapath *dp = p->dp;
{
const struct vport *p = OVS_CB(skb)->input_vport;
struct datapath *dp = p->dp;
@@
-272,7
+273,7
@@
void ovs_dp_process_packet_with_key(struct sk_buff *skb,
OVS_CB(skb)->flow = flow;
ovs_flow_stats_update(OVS_CB(skb)->flow, pkt_key->tp.flags, skb);
OVS_CB(skb)->flow = flow;
ovs_flow_stats_update(OVS_CB(skb)->flow, pkt_key->tp.flags, skb);
- ovs_execute_actions(dp, skb);
+ ovs_execute_actions(dp, skb
, recirc
);
stats_counter = &stats->n_hit;
out:
stats_counter = &stats->n_hit;
out:
@@
-298,7
+299,7
@@
void ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb)
return;
}
return;
}
- ovs_dp_process_packet_with_key(skb, &key);
+ ovs_dp_process_packet_with_key(skb, &key
, false
);
}
int ovs_dp_upcall(struct datapath *dp, struct sk_buff *skb,
}
int ovs_dp_upcall(struct datapath *dp, struct sk_buff *skb,
@@
-601,7
+602,7
@@
static int ovs_packet_cmd_execute(struct sk_buff *skb, struct genl_info *info)
OVS_CB(packet)->input_vport = input_vport;
local_bh_disable();
OVS_CB(packet)->input_vport = input_vport;
local_bh_disable();
- err = ovs_execute_actions(dp, packet);
+ err = ovs_execute_actions(dp, packet
, false
);
local_bh_enable();
rcu_read_unlock();
local_bh_enable();
rcu_read_unlock();