OVS_ACTION_ATTR_USERSPACE:调用 output_userspace()发送到用户态; OVS_ACTION_ATTR_HASH:调用 execute_hash()获取 skb 的 hash 赋值到 ovs_flow_hash; OVS_ACTION_ATTR_PUSH_VLAN:调用 push_vlan()增加 vlan 头部; OVS_ACTION_ATTR_POP_VLAN:调用 pop_vlan()移除 vlan 头; OVS_ACTION_ATTR_RECIRC:在 ...
OVS_ACTION_ATTR_USERSPACE:调用output_userspace()发送到用户态; OVS_ACTION_ATTR_HASH:调用execute_hash()获取skb的hash赋值到ovs_flow_hash OVS_ACTION_ATTR_PUSH_VLAN:调用push_vlan()增加vlan头部 OVS_ACTION_ATTR_POP_VLAN:调用pop_vlan()移除vlan头 OVS_ACTION_ATTR_RECIRC:在action_fifos全局数组中添加...
case OVS_ACTION_ATTR_POP_VLAN: err = pop_vlan(skb, key); break; /*将skb及key添加到defered action中*/ case OVS_ACTION_ATTR_RECIRC: err = execute_recirc(dp, skb, key, a, rem); if (nla_is_last(a, rem)) { /* If this is the last action, the skb has * been consumed or fr...
OVS_ACTION_ATTR_HASH:调用 execute_hash()获取 skb 的 hash 赋值到 ovs_flow_hash OVS_ACTION_ATTR_PUSH_VLAN:调用 push_vlan()增加 vlan 头部 OVS_ACTION_ATTR_RECIRC:在 action_fifos 全局数组中添加一个 deferred_action; 13 / 30 OVS_ACTION_ATTR_SET:调用 execute_set_action()设置相关参...
OVS_SAMPLE_ATTR_*.*/OVS_ACTION_ATTR_RECIRC,/*u32 recirc_id.*/OVS_ACTION_ATTR_HASH,/*struct ovs_action_hash.*/OVS_ACTION_ATTR_PUSH_MPLS,/*struct ovs_action_push_mpls.*/OVS_ACTION_ATTR_POP_MPLS,/*__be16 ethertype.*/OVS_ACTION_ATTR_SET_MASKED,/*One nested OVS_KEY_ATTR_* ...
1.在ovs_dp_process_packet中查找kernel缓存流表,查到后执行ovs_execute_actions->do_execute_actions,其中有个actions是OVS_ACTION_ATTR_HASH1 /* Must be called with rcu_read_lock. */ 2 void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key) ...
7190 7227 case OVS_ACTION_ATTR_RECIRC: @@ -7208,6 +7245,8 @@ dp_execute_cb(void *aux_, struct dp_packet_batch *packets_, 7208 7245 return; 7209 7246 } 7210 7247 7248 + COVERAGE_ADD(datapath_drop_recirc_error, 7249 + dp_packet_batch_size(packets_)); 7211 7250 VLOG_WARN...
"net"SUBSYSTEM==, ACTION=="add", ATTR{phys_switch_id}=="e41d2d60971d", \ ATTR{phys_port_name}!="", NAME="enp4s0f1_$attr{phys_port_name}" Replace the phys_switch_id value ("e41d2d60971d" above) with the value matching your switch, as obtained from:...
void tnl_neigh_cache_run(void) { struct tnl_neigh_entry *neigh; bool changed = false; ovs_mutex_lock(&mutex); CMAP_FOR_EACH(neigh, cmap_node, &table) { if (neigh->expires <= time_now()) { tnl_neigh_delete(neigh); changed = true; } } ovs_mutex_unlock(&mutex); if (changed)...
(skb)->input_vport->port_no;26key->phy.skb_mark = skb->mark;27key->ovs_flow_hash =0;28key->recirc_id =0;29/*提取skb中的MAC、协议、IP地址、端口信息等key值*/30returnkey_extract(skb, key);31}32/**33* key_extract - extracts a flow keyfroman Ethernet frame.34* @skb: sk_...