Lines Matching refs:key

73 	struct sw_flow_key key[OVS_DEFERRED_ACTION_THRESHOLD];  member
87 struct sw_flow_key *key = NULL; in clone_key() local
90 key = &keys->key[level - 1]; in clone_key()
91 *key = *key_; in clone_key()
94 return key; in clone_key()
126 const struct sw_flow_key *key, in add_deferred_actions() argument
139 da->pkt_key = *key; in add_deferred_actions()
145 static void invalidate_flow_key(struct sw_flow_key *key) in invalidate_flow_key() argument
147 key->mac_proto |= SW_FLOW_KEY_INVALID; in invalidate_flow_key()
150 static bool is_flow_key_valid(const struct sw_flow_key *key) in is_flow_key_valid() argument
152 return !(key->mac_proto & SW_FLOW_KEY_INVALID); in is_flow_key_valid()
156 struct sw_flow_key *key,
162 struct sw_flow_key *key,
165 static int push_mpls(struct sk_buff *skb, struct sw_flow_key *key, in push_mpls() argument
175 key->mac_proto = MAC_PROTO_NONE; in push_mpls()
177 invalidate_flow_key(key); in push_mpls()
181 static int pop_mpls(struct sk_buff *skb, struct sw_flow_key *key, in pop_mpls() argument
187 ovs_key_mac_proto(key) == MAC_PROTO_ETHERNET); in pop_mpls()
192 key->mac_proto = MAC_PROTO_ETHERNET; in pop_mpls()
194 invalidate_flow_key(key); in pop_mpls()
218 static int pop_vlan(struct sk_buff *skb, struct sw_flow_key *key) in pop_vlan() argument
224 invalidate_flow_key(key); in pop_vlan()
226 key->eth.vlan.tci = 0; in pop_vlan()
227 key->eth.vlan.tpid = 0; in pop_vlan()
232 static int push_vlan(struct sk_buff *skb, struct sw_flow_key *key, in push_vlan() argument
236 invalidate_flow_key(key); in push_vlan()
238 key->eth.vlan.tci = vlan->vlan_tci; in push_vlan()
239 key->eth.vlan.tpid = vlan->vlan_tpid; in push_vlan()
258 const struct ovs_key_ethernet *key, in set_eth_addr() argument
269 ether_addr_copy_masked(eth_hdr(skb)->h_source, key->eth_src, in set_eth_addr()
271 ether_addr_copy_masked(eth_hdr(skb)->h_dest, key->eth_dst, in set_eth_addr()
284 static int pop_eth(struct sk_buff *skb, struct sw_flow_key *key) in pop_eth() argument
293 key->mac_proto = MAC_PROTO_NONE; in pop_eth()
294 invalidate_flow_key(key); in pop_eth()
298 static int push_eth(struct sk_buff *skb, struct sw_flow_key *key, in push_eth() argument
309 key->mac_proto = MAC_PROTO_ETHERNET; in push_eth()
310 invalidate_flow_key(key); in push_eth()
314 static int push_nsh(struct sk_buff *skb, struct sw_flow_key *key, in push_nsh() argument
324 key->mac_proto = MAC_PROTO_NONE; in push_nsh()
325 invalidate_flow_key(key); in push_nsh()
329 static int pop_nsh(struct sk_buff *skb, struct sw_flow_key *key) in pop_nsh() argument
339 key->mac_proto = MAC_PROTO_ETHERNET; in pop_nsh()
341 key->mac_proto = MAC_PROTO_NONE; in pop_nsh()
342 invalidate_flow_key(key); in pop_nsh()
479 const struct ovs_key_ipv4 *key, in set_ipv4() argument
498 new_addr = OVS_MASKED(nh->saddr, key->ipv4_src, mask->ipv4_src); in set_ipv4()
506 new_addr = OVS_MASKED(nh->daddr, key->ipv4_dst, mask->ipv4_dst); in set_ipv4()
514 ipv4_change_dsfield(nh, ~mask->ipv4_tos, key->ipv4_tos); in set_ipv4()
518 set_ip_ttl(skb, nh, key->ipv4_ttl, mask->ipv4_ttl); in set_ipv4()
531 const struct ovs_key_ipv6 *key, in set_ipv6() argument
552 mask_ipv6_addr(saddr, key->ipv6_src, mask->ipv6_src, masked); in set_ipv6()
568 mask_ipv6_addr(daddr, key->ipv6_dst, mask->ipv6_dst, masked); in set_ipv6()
584 set_ipv6_dsfield(skb, nh, key->ipv6_tclass, mask->ipv6_tclass); in set_ipv6()
588 set_ipv6_fl(skb, nh, ntohl(key->ipv6_label), in set_ipv6()
594 set_ipv6_ttl(skb, nh, key->ipv6_hlimit, mask->ipv6_hlimit); in set_ipv6()
610 struct ovs_key_nsh key; in set_nsh() local
613 err = nsh_key_from_nlattr(a, &key, &mask); in set_nsh()
633 flags = OVS_MASKED(flags, key.base.flags, mask.base.flags); in set_nsh()
636 ttl = OVS_MASKED(ttl, key.base.ttl, mask.base.ttl); in set_nsh()
639 nh->path_hdr = OVS_MASKED(nh->path_hdr, key.base.path_hdr, in set_nsh()
646 OVS_MASKED(nh->md1.context[i], key.context[i], in set_nsh()
673 const struct ovs_key_udp *key, in set_udp() argument
687 src = OVS_MASKED(uh->source, key->udp_src, mask->udp_src); in set_udp()
688 dst = OVS_MASKED(uh->dest, key->udp_dst, mask->udp_dst); in set_udp()
716 const struct ovs_key_tcp *key, in set_tcp() argument
729 src = OVS_MASKED(th->source, key->tcp_src, mask->tcp_src); in set_tcp()
734 dst = OVS_MASKED(th->dest, key->tcp_dst, mask->tcp_dst); in set_tcp()
745 const struct ovs_key_sctp *key, in set_sctp() argument
761 sh->source = OVS_MASKED(sh->source, key->sctp_src, mask->sctp_src); in set_sctp()
762 sh->dest = OVS_MASKED(sh->dest, key->sctp_dst, mask->sctp_dst); in set_sctp()
854 struct sw_flow_key *key) in ovs_fragment() argument
870 if (key->eth.type == htons(ETH_P_IP)) { in ovs_fragment()
875 ovs_key_mac_proto(key)); in ovs_fragment()
886 } else if (key->eth.type == htons(ETH_P_IPV6)) { in ovs_fragment()
891 ovs_key_mac_proto(key)); in ovs_fragment()
905 ovs_vport_name(vport), ntohs(key->eth.type), mru, in ovs_fragment()
917 struct sw_flow_key *key) in do_output() argument
926 if (skb->len - cutlen > ovs_mac_header_len(key)) in do_output()
929 pskb_trim(skb, ovs_mac_header_len(key)); in do_output()
940 ovs_vport_send(vport, skb, ovs_key_mac_proto(key)); in do_output()
944 ovs_fragment(net, vport, skb, mru, key); in do_output()
954 struct sw_flow_key *key, const struct nlattr *attr, in output_userspace() argument
1009 return ovs_dp_upcall(dp, skb, key, &upcall, cutlen); in output_userspace()
1013 struct sw_flow_key *key, in dec_ttl_exception_handler() argument
1020 return clone_execute(dp, skb, key, 0, nla_data(actions), in dec_ttl_exception_handler()
1032 struct sw_flow_key *key, const struct nlattr *attr, in sample() argument
1054 return clone_execute(dp, skb, key, 0, actions, rem, last, in sample()
1063 struct sw_flow_key *key, const struct nlattr *attr, in clone() argument
1076 return clone_execute(dp, skb, key, 0, actions, rem, last, in clone()
1080 static void execute_hash(struct sk_buff *skb, struct sw_flow_key *key, in execute_hash() argument
1100 key->ovs_flow_hash = hash; in execute_hash()
1199 struct sw_flow_key *key, in execute_recirc() argument
1204 if (!is_flow_key_valid(key)) { in execute_recirc()
1207 err = ovs_flow_key_update(skb, key); in execute_recirc()
1211 BUG_ON(!is_flow_key_valid(key)); in execute_recirc()
1214 return clone_execute(dp, skb, key, recirc_id, NULL, 0, last, true); in execute_recirc()
1218 struct sw_flow_key *key, in execute_check_pkt_len() argument
1252 return clone_execute(dp, skb, key, 0, nla_data(actions), in execute_check_pkt_len()
1256 static int execute_dec_ttl(struct sk_buff *skb, struct sw_flow_key *key) in execute_dec_ttl() argument
1273 key->ip.ttl = --nh->hop_limit; in execute_dec_ttl()
1290 key->ip.ttl = nh->ttl; in execute_dec_ttl()
1297 struct sw_flow_key *key, in do_execute_actions() argument
1308 trace_ovs_do_execute_action(dp, skb, key, a, rem); in do_execute_actions()
1323 do_output(dp, skb, port, key); in do_execute_actions()
1331 do_output(dp, clone, port, key); in do_execute_actions()
1345 output_userspace(dp, skb, key, a, attr, in do_execute_actions()
1355 execute_hash(skb, key, a); in do_execute_actions()
1361 err = push_mpls(skb, key, mpls->mpls_lse, in do_execute_actions()
1372 err = push_mpls(skb, key, mpls->mpls_lse, in do_execute_actions()
1377 err = pop_mpls(skb, key, nla_get_be16(a)); in do_execute_actions()
1381 err = push_vlan(skb, key, nla_data(a)); in do_execute_actions()
1385 err = pop_vlan(skb, key); in do_execute_actions()
1391 err = execute_recirc(dp, skb, key, a, last); in do_execute_actions()
1403 err = execute_set_action(skb, key, nla_data(a)); in do_execute_actions()
1408 err = execute_masked_set_action(skb, key, nla_data(a)); in do_execute_actions()
1414 err = sample(dp, skb, key, a, last); in do_execute_actions()
1422 if (!is_flow_key_valid(key)) { in do_execute_actions()
1423 err = ovs_flow_key_update(skb, key); in do_execute_actions()
1428 err = ovs_ct_execute(ovs_dp_get_net(dp), skb, key, in do_execute_actions()
1437 err = ovs_ct_clear(skb, key); in do_execute_actions()
1441 err = push_eth(skb, key, nla_data(a)); in do_execute_actions()
1445 err = pop_eth(skb, key); in do_execute_actions()
1456 err = push_nsh(skb, key, nh); in do_execute_actions()
1461 err = pop_nsh(skb, key); in do_execute_actions()
1465 if (ovs_meter_execute(dp, skb, key, nla_get_u32(a))) { in do_execute_actions()
1474 err = clone(dp, skb, key, a, last); in do_execute_actions()
1484 err = execute_check_pkt_len(dp, skb, key, a, last); in do_execute_actions()
1492 err = execute_dec_ttl(skb, key); in do_execute_actions()
1495 key, a); in do_execute_actions()
1525 struct sw_flow_key *key, u32 recirc_id, in clone_execute() argument
1545 clone = clone_flow_key ? clone_key(key) : key; in clone_execute()
1566 da = add_deferred_actions(skb, key, actions, len); in clone_execute()
1569 key = &da->pkt_key; in clone_execute()
1570 key->recirc_id = recirc_id; in clone_execute()
1603 struct sw_flow_key *key = &da->pkt_key; in process_deferred_actions() local
1608 do_execute_actions(dp, skb, key, actions, actions_len); in process_deferred_actions()
1610 ovs_dp_process_packet(skb, key); in process_deferred_actions()
1620 struct sw_flow_key *key) in ovs_execute_actions() argument
1634 err = do_execute_actions(dp, skb, key, in ovs_execute_actions()