Lines Matching refs:key
52 struct sw_flow_key *key = NULL; in clone_key() local
55 key = &keys->key[level - 1]; in clone_key()
56 *key = *key_; in clone_key()
59 return key; in clone_key()
91 const struct sw_flow_key *key, in add_deferred_actions() argument
103 da->pkt_key = *key; in add_deferred_actions()
109 static void invalidate_flow_key(struct sw_flow_key *key) in invalidate_flow_key() argument
111 key->mac_proto |= SW_FLOW_KEY_INVALID; in invalidate_flow_key()
114 static bool is_flow_key_valid(const struct sw_flow_key *key) in is_flow_key_valid() argument
116 return !(key->mac_proto & SW_FLOW_KEY_INVALID); in is_flow_key_valid()
120 struct sw_flow_key *key,
126 struct sw_flow_key *key,
129 static int push_mpls(struct sk_buff *skb, struct sw_flow_key *key, in push_mpls() argument
139 key->mac_proto = MAC_PROTO_NONE; in push_mpls()
141 invalidate_flow_key(key); in push_mpls()
145 static int pop_mpls(struct sk_buff *skb, struct sw_flow_key *key, in pop_mpls() argument
151 ovs_key_mac_proto(key) == MAC_PROTO_ETHERNET); in pop_mpls()
156 key->mac_proto = MAC_PROTO_ETHERNET; in pop_mpls()
158 invalidate_flow_key(key); in pop_mpls()
182 static int pop_vlan(struct sk_buff *skb, struct sw_flow_key *key) in pop_vlan() argument
188 invalidate_flow_key(key); in pop_vlan()
190 key->eth.vlan.tci = 0; in pop_vlan()
191 key->eth.vlan.tpid = 0; in pop_vlan()
196 static int push_vlan(struct sk_buff *skb, struct sw_flow_key *key, in push_vlan() argument
202 invalidate_flow_key(key); in push_vlan()
204 key->eth.vlan.tci = vlan->vlan_tci; in push_vlan()
205 key->eth.vlan.tpid = vlan->vlan_tpid; in push_vlan()
226 const struct ovs_key_ethernet *key, in set_eth_addr() argument
237 ether_addr_copy_masked(eth_hdr(skb)->h_source, key->eth_src, in set_eth_addr()
239 ether_addr_copy_masked(eth_hdr(skb)->h_dest, key->eth_dst, in set_eth_addr()
252 static int pop_eth(struct sk_buff *skb, struct sw_flow_key *key) in pop_eth() argument
261 key->mac_proto = MAC_PROTO_NONE; in pop_eth()
262 invalidate_flow_key(key); in pop_eth()
266 static int push_eth(struct sk_buff *skb, struct sw_flow_key *key, in push_eth() argument
277 key->mac_proto = MAC_PROTO_ETHERNET; in push_eth()
278 invalidate_flow_key(key); in push_eth()
283 struct sw_flow_key *key, in push_nsh() argument
299 key->mac_proto = MAC_PROTO_NONE; in push_nsh()
300 invalidate_flow_key(key); in push_nsh()
304 static int pop_nsh(struct sk_buff *skb, struct sw_flow_key *key) in pop_nsh() argument
314 key->mac_proto = MAC_PROTO_ETHERNET; in pop_nsh()
316 key->mac_proto = MAC_PROTO_NONE; in pop_nsh()
317 invalidate_flow_key(key); in pop_nsh()
454 const struct ovs_key_ipv4 *key, in set_ipv4() argument
473 new_addr = OVS_MASKED(nh->saddr, key->ipv4_src, mask->ipv4_src); in set_ipv4()
481 new_addr = OVS_MASKED(nh->daddr, key->ipv4_dst, mask->ipv4_dst); in set_ipv4()
489 ipv4_change_dsfield(nh, ~mask->ipv4_tos, key->ipv4_tos); in set_ipv4()
493 set_ip_ttl(skb, nh, key->ipv4_ttl, mask->ipv4_ttl); in set_ipv4()
506 const struct ovs_key_ipv6 *key, in set_ipv6() argument
527 mask_ipv6_addr(saddr, key->ipv6_src, mask->ipv6_src, masked); in set_ipv6()
543 mask_ipv6_addr(daddr, key->ipv6_dst, mask->ipv6_dst, masked); in set_ipv6()
559 set_ipv6_dsfield(skb, nh, key->ipv6_tclass, mask->ipv6_tclass); in set_ipv6()
563 set_ipv6_fl(skb, nh, ntohl(key->ipv6_label), in set_ipv6()
569 set_ipv6_ttl(skb, nh, key->ipv6_hlimit, mask->ipv6_hlimit); in set_ipv6()
585 struct ovs_key_nsh key; in set_nsh() local
588 err = nsh_key_from_nlattr(a, &key, &mask); in set_nsh()
608 flags = OVS_MASKED(flags, key.base.flags, mask.base.flags); in set_nsh()
611 ttl = OVS_MASKED(ttl, key.base.ttl, mask.base.ttl); in set_nsh()
614 nh->path_hdr = OVS_MASKED(nh->path_hdr, key.base.path_hdr, in set_nsh()
621 OVS_MASKED(nh->md1.context[i], key.context[i], in set_nsh()
648 const struct ovs_key_udp *key, in set_udp() argument
662 src = OVS_MASKED(uh->source, key->udp_src, mask->udp_src); in set_udp()
663 dst = OVS_MASKED(uh->dest, key->udp_dst, mask->udp_dst); in set_udp()
691 const struct ovs_key_tcp *key, in set_tcp() argument
704 src = OVS_MASKED(th->source, key->tcp_src, mask->tcp_src); in set_tcp()
709 dst = OVS_MASKED(th->dest, key->tcp_dst, mask->tcp_dst); in set_tcp()
720 const struct ovs_key_sctp *key, in set_sctp() argument
736 sh->source = OVS_MASKED(sh->source, key->sctp_src, mask->sctp_src); in set_sctp()
737 sh->dest = OVS_MASKED(sh->dest, key->sctp_dst, mask->sctp_dst); in set_sctp()
829 struct sw_flow_key *key) in ovs_fragment() argument
845 if (key->eth.type == htons(ETH_P_IP)) { in ovs_fragment()
850 ovs_key_mac_proto(key)); in ovs_fragment()
861 } else if (key->eth.type == htons(ETH_P_IPV6)) { in ovs_fragment()
866 ovs_key_mac_proto(key)); in ovs_fragment()
880 ovs_vport_name(vport), ntohs(key->eth.type), mru, in ovs_fragment()
892 struct sw_flow_key *key) in do_output() argument
903 if (skb->len - cutlen > ovs_mac_header_len(key)) in do_output()
906 pskb_trim(skb, ovs_mac_header_len(key)); in do_output()
911 ovs_vport_send(vport, skb, ovs_key_mac_proto(key)); in do_output()
915 ovs_fragment(net, vport, skb, mru, key); in do_output()
925 struct sw_flow_key *key, const struct nlattr *attr, in output_userspace() argument
981 return ovs_dp_upcall(dp, skb, key, &upcall, cutlen); in output_userspace()
985 struct sw_flow_key *key, in dec_ttl_exception_handler() argument
992 return clone_execute(dp, skb, key, 0, nla_data(actions), in dec_ttl_exception_handler()
1004 struct sw_flow_key *key, const struct nlattr *attr, in sample() argument
1031 err = clone_execute(dp, skb, key, 0, actions, rem, last, in sample()
1045 struct sw_flow_key *key, const struct nlattr *attr, in clone() argument
1058 return clone_execute(dp, skb, key, 0, actions, rem, last, in clone()
1062 static void execute_hash(struct sk_buff *skb, struct sw_flow_key *key, in execute_hash() argument
1082 key->ovs_flow_hash = hash; in execute_hash()
1181 struct sw_flow_key *key, in execute_recirc() argument
1186 if (!is_flow_key_valid(key)) { in execute_recirc()
1189 err = ovs_flow_key_update(skb, key); in execute_recirc()
1193 BUG_ON(!is_flow_key_valid(key)); in execute_recirc()
1196 return clone_execute(dp, skb, key, recirc_id, NULL, 0, last, true); in execute_recirc()
1200 struct sw_flow_key *key, in execute_check_pkt_len() argument
1234 return clone_execute(dp, skb, key, 0, nla_data(actions), in execute_check_pkt_len()
1238 static int execute_dec_ttl(struct sk_buff *skb, struct sw_flow_key *key) in execute_dec_ttl() argument
1255 key->ip.ttl = --nh->hop_limit; in execute_dec_ttl()
1272 key->ip.ttl = nh->ttl; in execute_dec_ttl()
1317 struct sw_flow_key *key, in do_execute_actions() argument
1328 trace_ovs_do_execute_action(dp, skb, key, a, rem); in do_execute_actions()
1343 do_output(dp, skb, port, key); in do_execute_actions()
1351 do_output(dp, clone, port, key); in do_execute_actions()
1365 output_userspace(dp, skb, key, a, attr, in do_execute_actions()
1375 execute_hash(skb, key, a); in do_execute_actions()
1381 err = push_mpls(skb, key, mpls->mpls_lse, in do_execute_actions()
1392 err = push_mpls(skb, key, mpls->mpls_lse, in do_execute_actions()
1397 err = pop_mpls(skb, key, nla_get_be16(a)); in do_execute_actions()
1401 err = push_vlan(skb, key, nla_data(a)); in do_execute_actions()
1405 err = pop_vlan(skb, key); in do_execute_actions()
1411 err = execute_recirc(dp, skb, key, a, last); in do_execute_actions()
1423 err = execute_set_action(skb, key, nla_data(a)); in do_execute_actions()
1428 err = execute_masked_set_action(skb, key, nla_data(a)); in do_execute_actions()
1434 err = sample(dp, skb, key, a, last); in do_execute_actions()
1442 if (!is_flow_key_valid(key)) { in do_execute_actions()
1443 err = ovs_flow_key_update(skb, key); in do_execute_actions()
1448 err = ovs_ct_execute(ovs_dp_get_net(dp), skb, key, in do_execute_actions()
1457 err = ovs_ct_clear(skb, key); in do_execute_actions()
1461 err = push_eth(skb, key, nla_data(a)); in do_execute_actions()
1465 err = pop_eth(skb, key); in do_execute_actions()
1469 err = push_nsh(skb, key, nla_data(a)); in do_execute_actions()
1473 err = pop_nsh(skb, key); in do_execute_actions()
1477 if (ovs_meter_execute(dp, skb, key, nla_get_u32(a))) { in do_execute_actions()
1486 err = clone(dp, skb, key, a, last); in do_execute_actions()
1496 err = execute_check_pkt_len(dp, skb, key, a, last); in do_execute_actions()
1504 err = execute_dec_ttl(skb, key); in do_execute_actions()
1507 key, a); in do_execute_actions()
1546 struct sw_flow_key *key, u32 recirc_id, in clone_execute() argument
1566 clone = clone_flow_key ? clone_key(key) : key; in clone_execute()
1586 da = add_deferred_actions(skb, key, actions, len); in clone_execute()
1589 key = &da->pkt_key; in clone_execute()
1590 key->recirc_id = recirc_id; in clone_execute()
1623 struct sw_flow_key *key = &da->pkt_key; in process_deferred_actions() local
1628 do_execute_actions(dp, skb, key, actions, actions_len); in process_deferred_actions()
1630 ovs_dp_process_packet(skb, key); in process_deferred_actions()
1640 struct sw_flow_key *key) in ovs_execute_actions() argument
1654 err = do_execute_actions(dp, skb, key, in ovs_execute_actions()