Lines Matching refs:a

382 				const struct nlattr *a[],  in __parse_flow_nlattrs()  argument
414 a[type] = nla; in __parse_flow_nlattrs()
427 const struct nlattr *a[], u64 *attrsp, in parse_flow_mask_nlattrs() argument
430 return __parse_flow_nlattrs(attr, a, attrsp, log, true); in parse_flow_mask_nlattrs()
434 const struct nlattr *a[], u64 *attrsp, in parse_flow_nlattrs() argument
437 return __parse_flow_nlattrs(attr, a, attrsp, log, false); in parse_flow_nlattrs()
440 static int genev_tun_opt_from_nlattr(const struct nlattr *a, in genev_tun_opt_from_nlattr() argument
446 if (nla_len(a) > sizeof(match->key->tun_opts)) { in genev_tun_opt_from_nlattr()
448 nla_len(a), sizeof(match->key->tun_opts)); in genev_tun_opt_from_nlattr()
452 if (nla_len(a) % 4 != 0) { in genev_tun_opt_from_nlattr()
454 nla_len(a)); in genev_tun_opt_from_nlattr()
463 SW_FLOW_KEY_PUT(match, tun_opts_len, nla_len(a), in genev_tun_opt_from_nlattr()
476 if (match->key->tun_opts_len != nla_len(a)) { in genev_tun_opt_from_nlattr()
478 match->key->tun_opts_len, nla_len(a)); in genev_tun_opt_from_nlattr()
485 opt_key_offset = TUN_METADATA_OFFSET(nla_len(a)); in genev_tun_opt_from_nlattr()
486 SW_FLOW_KEY_MEMCPY_OFFSET(match, opt_key_offset, nla_data(a), in genev_tun_opt_from_nlattr()
487 nla_len(a), is_mask); in genev_tun_opt_from_nlattr()
495 struct nlattr *a; in vxlan_tun_opt_from_nlattr() local
503 nla_for_each_nested(a, attr, rem) { in vxlan_tun_opt_from_nlattr()
504 int type = nla_type(a); in vxlan_tun_opt_from_nlattr()
512 if (!check_attr_len(nla_len(a), in vxlan_tun_opt_from_nlattr()
515 type, nla_len(a), in vxlan_tun_opt_from_nlattr()
522 opts.gbp = nla_get_u32(a); in vxlan_tun_opt_from_nlattr()
554 struct nlattr *a; in ip_tun_from_nlattr() local
557 nla_for_each_nested(a, attr, rem) { in ip_tun_from_nlattr()
558 int type = nla_type(a); in ip_tun_from_nlattr()
567 if (!check_attr_len(nla_len(a), in ip_tun_from_nlattr()
570 type, nla_len(a), ovs_tunnel_key_lens[type].len); in ip_tun_from_nlattr()
577 nla_get_be64(a), is_mask); in ip_tun_from_nlattr()
582 nla_get_in_addr(a), is_mask); in ip_tun_from_nlattr()
587 nla_get_in_addr(a), is_mask); in ip_tun_from_nlattr()
592 nla_get_in6_addr(a), is_mask); in ip_tun_from_nlattr()
597 nla_get_in6_addr(a), is_mask); in ip_tun_from_nlattr()
602 nla_get_u8(a), is_mask); in ip_tun_from_nlattr()
606 nla_get_u8(a), is_mask); in ip_tun_from_nlattr()
617 nla_get_be16(a), is_mask); in ip_tun_from_nlattr()
621 nla_get_be16(a), is_mask); in ip_tun_from_nlattr()
632 err = genev_tun_opt_from_nlattr(a, match, is_mask, log); in ip_tun_from_nlattr()
645 err = vxlan_tun_opt_from_nlattr(a, match, is_mask, log); in ip_tun_from_nlattr()
811 u64 *attrs, const struct nlattr **a, in metadata_from_nlattrs() argument
815 u32 hash_val = nla_get_u32(a[OVS_KEY_ATTR_DP_HASH]); in metadata_from_nlattrs()
822 u32 recirc_id = nla_get_u32(a[OVS_KEY_ATTR_RECIRC_ID]); in metadata_from_nlattrs()
830 nla_get_u32(a[OVS_KEY_ATTR_PRIORITY]), is_mask); in metadata_from_nlattrs()
835 u32 in_port = nla_get_u32(a[OVS_KEY_ATTR_IN_PORT]); in metadata_from_nlattrs()
852 uint32_t mark = nla_get_u32(a[OVS_KEY_ATTR_SKB_MARK]); in metadata_from_nlattrs()
858 if (ip_tun_from_nlattr(a[OVS_KEY_ATTR_TUNNEL], match, in metadata_from_nlattrs()
866 u32 ct_state = nla_get_u32(a[OVS_KEY_ATTR_CT_STATE]); in metadata_from_nlattrs()
879 u16 ct_zone = nla_get_u16(a[OVS_KEY_ATTR_CT_ZONE]); in metadata_from_nlattrs()
886 u32 mark = nla_get_u32(a[OVS_KEY_ATTR_CT_MARK]); in metadata_from_nlattrs()
895 cl = nla_data(a[OVS_KEY_ATTR_CT_LABELS]); in metadata_from_nlattrs()
904 u64 attrs, const struct nlattr **a, in ovs_key_from_nlattrs() argument
909 err = metadata_from_nlattrs(net, match, &attrs, a, is_mask, log); in ovs_key_from_nlattrs()
916 eth_key = nla_data(a[OVS_KEY_ATTR_ETHERNET]); in ovs_key_from_nlattrs()
927 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_key_from_nlattrs()
944 eth_type = nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]); in ovs_key_from_nlattrs()
963 ipv4_key = nla_data(a[OVS_KEY_ATTR_IPV4]); in ovs_key_from_nlattrs()
987 ipv6_key = nla_data(a[OVS_KEY_ATTR_IPV6]); in ovs_key_from_nlattrs()
1025 arp_key = nla_data(a[OVS_KEY_ATTR_ARP]); in ovs_key_from_nlattrs()
1049 mpls_key = nla_data(a[OVS_KEY_ATTR_MPLS]); in ovs_key_from_nlattrs()
1059 tcp_key = nla_data(a[OVS_KEY_ATTR_TCP]); in ovs_key_from_nlattrs()
1067 nla_get_be16(a[OVS_KEY_ATTR_TCP_FLAGS]), in ovs_key_from_nlattrs()
1075 udp_key = nla_data(a[OVS_KEY_ATTR_UDP]); in ovs_key_from_nlattrs()
1084 sctp_key = nla_data(a[OVS_KEY_ATTR_SCTP]); in ovs_key_from_nlattrs()
1093 icmp_key = nla_data(a[OVS_KEY_ATTR_ICMP]); in ovs_key_from_nlattrs()
1104 icmpv6_key = nla_data(a[OVS_KEY_ATTR_ICMPV6]); in ovs_key_from_nlattrs()
1115 nd_key = nla_data(a[OVS_KEY_ATTR_ND]); in ovs_key_from_nlattrs()
1183 const struct nlattr *a[OVS_KEY_ATTR_MAX + 1]; in ovs_nla_get_match() local
1191 err = parse_flow_nlattrs(nla_key, a, &key_attrs, log); in ovs_nla_get_match()
1197 (nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]) == htons(ETH_P_8021Q))) { in ovs_nla_get_match()
1207 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_nla_get_match()
1208 encap = a[OVS_KEY_ATTR_ENCAP]; in ovs_nla_get_match()
1213 err = parse_flow_nlattrs(encap, a, &key_attrs, log); in ovs_nla_get_match()
1228 err = ovs_key_from_nlattrs(net, match, key_attrs, a, false, log); in ovs_nla_get_match()
1262 err = parse_flow_mask_nlattrs(nla_mask, a, &mask_attrs, log); in ovs_nla_get_match()
1280 if (a[OVS_KEY_ATTR_ETHERTYPE]) in ovs_nla_get_match()
1281 eth_type = nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]); in ovs_nla_get_match()
1285 encap = a[OVS_KEY_ATTR_ENCAP]; in ovs_nla_get_match()
1286 err = parse_flow_mask_nlattrs(encap, a, in ovs_nla_get_match()
1297 if (a[OVS_KEY_ATTR_VLAN]) in ovs_nla_get_match()
1298 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_nla_get_match()
1308 err = ovs_key_from_nlattrs(net, match, mask_attrs, a, true, in ovs_nla_get_match()
1394 const struct nlattr *a[OVS_KEY_ATTR_MAX + 1]; in ovs_nla_get_flow_metadata() local
1399 err = parse_flow_nlattrs(attr, a, &attrs, log); in ovs_nla_get_flow_metadata()
1409 return metadata_from_nlattrs(net, &match, &attrs, a, false, log); in ovs_nla_get_flow_metadata()
1692 static void ovs_nla_free_set_action(const struct nlattr *a) in ovs_nla_free_set_action() argument
1694 const struct nlattr *ovs_key = nla_data(a); in ovs_nla_free_set_action()
1707 const struct nlattr *a; in ovs_nla_free_flow_actions() local
1713 nla_for_each_attr(a, sf_acts->actions, sf_acts->actions_len, rem) { in ovs_nla_free_flow_actions()
1714 switch (nla_type(a)) { in ovs_nla_free_flow_actions()
1716 ovs_nla_free_set_action(a); in ovs_nla_free_flow_actions()
1719 ovs_ct_free_action(a); in ovs_nla_free_flow_actions()
1778 struct nlattr *a; in __add_action() local
1780 a = reserve_sfa_size(sfa, nla_attr_size(len), log); in __add_action()
1781 if (IS_ERR(a)) in __add_action()
1782 return a; in __add_action()
1784 a->nla_type = attrtype; in __add_action()
1785 a->nla_len = nla_attr_size(len); in __add_action()
1788 memcpy(nla_data(a), data, len); in __add_action()
1789 memset((unsigned char *) a + a->nla_len, 0, nla_padlen(len)); in __add_action()
1791 return a; in __add_action()
1797 struct nlattr *a; in ovs_nla_add_action() local
1799 a = __add_action(sfa, attrtype, data, len, log); in ovs_nla_add_action()
1801 return PTR_ERR_OR_ZERO(a); in ovs_nla_add_action()
1820 struct nlattr *a = (struct nlattr *) ((unsigned char *)sfa->actions + in add_nested_action_end() local
1823 a->nla_len = sfa->actions_len - st_offset; in add_nested_action_end()
1838 const struct nlattr *a; in validate_and_copy_sample() local
1842 nla_for_each_nested(a, attr, rem) { in validate_and_copy_sample()
1843 int type = nla_type(a); in validate_and_copy_sample()
1846 attrs[type] = a; in validate_and_copy_sample()
1934 struct nlattr *a; in validate_and_copy_set_tun() local
1962 a = __add_action(sfa, OVS_KEY_ATTR_TUNNEL_INFO, NULL, in validate_and_copy_set_tun()
1964 if (IS_ERR(a)) { in validate_and_copy_set_tun()
1966 return PTR_ERR(a); in validate_and_copy_set_tun()
1969 ovs_tun = nla_data(a); in validate_and_copy_set_tun()
2004 static int validate_set(const struct nlattr *a, in validate_set() argument
2009 const struct nlattr *ovs_key = nla_data(a); in validate_set()
2014 if (nla_total_size(nla_len(ovs_key)) != nla_len(a)) in validate_set()
2048 err = validate_and_copy_set_tun(a, sfa, log); in validate_set()
2173 struct nlattr *a[OVS_USERSPACE_ATTR_MAX + 1]; in validate_userspace() local
2176 error = nla_parse_nested(a, OVS_USERSPACE_ATTR_MAX, in validate_userspace()
2181 if (!a[OVS_USERSPACE_ATTR_PID] || in validate_userspace()
2182 !nla_get_u32(a[OVS_USERSPACE_ATTR_PID])) in validate_userspace()
2207 const struct nlattr *a; in __ovs_nla_copy_actions() local
2213 nla_for_each_nested(a, attr, rem) { in __ovs_nla_copy_actions()
2230 int type = nla_type(a); in __ovs_nla_copy_actions()
2234 (action_lens[type] != nla_len(a) && in __ovs_nla_copy_actions()
2244 err = validate_userspace(a); in __ovs_nla_copy_actions()
2250 if (nla_get_u32(a) >= DP_MAX_PORTS) in __ovs_nla_copy_actions()
2255 const struct ovs_action_hash *act_hash = nla_data(a); in __ovs_nla_copy_actions()
2272 vlan = nla_data(a); in __ovs_nla_copy_actions()
2284 const struct ovs_action_push_mpls *mpls = nla_data(a); in __ovs_nla_copy_actions()
2320 err = validate_set(a, key, sfa, in __ovs_nla_copy_actions()
2327 err = validate_set(a, key, sfa, in __ovs_nla_copy_actions()
2334 err = validate_and_copy_sample(net, a, key, depth, sfa, in __ovs_nla_copy_actions()
2342 err = ovs_ct_copy_action(net, a, key, sfa, log); in __ovs_nla_copy_actions()
2353 err = copy_action(a, sfa, log); in __ovs_nla_copy_actions()
2387 const struct nlattr *a; in sample_action_to_attr() local
2395 nla_for_each_nested(a, attr, rem) { in sample_action_to_attr()
2396 int type = nla_type(a); in sample_action_to_attr()
2402 sizeof(u32), nla_data(a))) in sample_action_to_attr()
2409 err = ovs_nla_put_actions(nla_data(a), nla_len(a), skb); in sample_action_to_attr()
2421 static int set_action_to_attr(const struct nlattr *a, struct sk_buff *skb) in set_action_to_attr() argument
2423 const struct nlattr *ovs_key = nla_data(a); in set_action_to_attr()
2447 if (nla_put(skb, OVS_ACTION_ATTR_SET, nla_len(a), ovs_key)) in set_action_to_attr()
2455 static int masked_set_action_to_set_action_attr(const struct nlattr *a, in masked_set_action_to_set_action_attr() argument
2458 const struct nlattr *ovs_key = nla_data(a); in masked_set_action_to_set_action_attr()
2478 const struct nlattr *a; in ovs_nla_put_actions() local
2481 nla_for_each_attr(a, attr, len, rem) { in ovs_nla_put_actions()
2482 int type = nla_type(a); in ovs_nla_put_actions()
2486 err = set_action_to_attr(a, skb); in ovs_nla_put_actions()
2492 err = masked_set_action_to_set_action_attr(a, skb); in ovs_nla_put_actions()
2498 err = sample_action_to_attr(a, skb); in ovs_nla_put_actions()
2504 err = ovs_ct_action_to_attr(nla_data(a), skb); in ovs_nla_put_actions()
2510 if (nla_put(skb, type, nla_len(a), nla_data(a))) in ovs_nla_put_actions()