Lines Matching refs:a
359 const struct nlattr *a[], in __parse_flow_nlattrs() argument
391 a[type] = nla; in __parse_flow_nlattrs()
404 const struct nlattr *a[], u64 *attrsp, in parse_flow_mask_nlattrs() argument
407 return __parse_flow_nlattrs(attr, a, attrsp, log, true); in parse_flow_mask_nlattrs()
411 const struct nlattr *a[], u64 *attrsp, in parse_flow_nlattrs() argument
414 return __parse_flow_nlattrs(attr, a, attrsp, log, false); in parse_flow_nlattrs()
417 static int genev_tun_opt_from_nlattr(const struct nlattr *a, in genev_tun_opt_from_nlattr() argument
423 if (nla_len(a) > sizeof(match->key->tun_opts)) { in genev_tun_opt_from_nlattr()
425 nla_len(a), sizeof(match->key->tun_opts)); in genev_tun_opt_from_nlattr()
429 if (nla_len(a) % 4 != 0) { in genev_tun_opt_from_nlattr()
431 nla_len(a)); in genev_tun_opt_from_nlattr()
440 SW_FLOW_KEY_PUT(match, tun_opts_len, nla_len(a), in genev_tun_opt_from_nlattr()
453 if (match->key->tun_opts_len != nla_len(a)) { in genev_tun_opt_from_nlattr()
455 match->key->tun_opts_len, nla_len(a)); in genev_tun_opt_from_nlattr()
462 opt_key_offset = TUN_METADATA_OFFSET(nla_len(a)); in genev_tun_opt_from_nlattr()
463 SW_FLOW_KEY_MEMCPY_OFFSET(match, opt_key_offset, nla_data(a), in genev_tun_opt_from_nlattr()
464 nla_len(a), is_mask); in genev_tun_opt_from_nlattr()
472 static int vxlan_tun_opt_from_nlattr(const struct nlattr *a, in vxlan_tun_opt_from_nlattr() argument
483 err = nla_parse_nested(tb, OVS_VXLAN_EXT_MAX, a, vxlan_opt_policy); in vxlan_tun_opt_from_nlattr()
507 struct nlattr *a; in ipv4_tun_from_nlattr() local
513 nla_for_each_nested(a, attr, rem) { in ipv4_tun_from_nlattr()
514 int type = nla_type(a); in ipv4_tun_from_nlattr()
523 if (ovs_tunnel_key_lens[type].len != nla_len(a) && in ipv4_tun_from_nlattr()
526 type, nla_len(a), ovs_tunnel_key_lens[type].len); in ipv4_tun_from_nlattr()
533 nla_get_be64(a), is_mask); in ipv4_tun_from_nlattr()
538 nla_get_in_addr(a), is_mask); in ipv4_tun_from_nlattr()
542 nla_get_in_addr(a), is_mask); in ipv4_tun_from_nlattr()
546 nla_get_u8(a), is_mask); in ipv4_tun_from_nlattr()
550 nla_get_u8(a), is_mask); in ipv4_tun_from_nlattr()
561 nla_get_be16(a), is_mask); in ipv4_tun_from_nlattr()
565 nla_get_be16(a), is_mask); in ipv4_tun_from_nlattr()
576 err = genev_tun_opt_from_nlattr(a, match, is_mask, log); in ipv4_tun_from_nlattr()
589 err = vxlan_tun_opt_from_nlattr(a, match, is_mask, log); in ipv4_tun_from_nlattr()
719 const struct nlattr **a, bool is_mask, in metadata_from_nlattrs() argument
723 u32 hash_val = nla_get_u32(a[OVS_KEY_ATTR_DP_HASH]); in metadata_from_nlattrs()
730 u32 recirc_id = nla_get_u32(a[OVS_KEY_ATTR_RECIRC_ID]); in metadata_from_nlattrs()
738 nla_get_u32(a[OVS_KEY_ATTR_PRIORITY]), is_mask); in metadata_from_nlattrs()
743 u32 in_port = nla_get_u32(a[OVS_KEY_ATTR_IN_PORT]); in metadata_from_nlattrs()
760 uint32_t mark = nla_get_u32(a[OVS_KEY_ATTR_SKB_MARK]); in metadata_from_nlattrs()
766 if (ipv4_tun_from_nlattr(a[OVS_KEY_ATTR_TUNNEL], match, in metadata_from_nlattrs()
775 const struct nlattr **a, bool is_mask, in ovs_key_from_nlattrs() argument
780 err = metadata_from_nlattrs(match, &attrs, a, is_mask, log); in ovs_key_from_nlattrs()
787 eth_key = nla_data(a[OVS_KEY_ATTR_ETHERNET]); in ovs_key_from_nlattrs()
798 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_key_from_nlattrs()
815 eth_type = nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]); in ovs_key_from_nlattrs()
834 ipv4_key = nla_data(a[OVS_KEY_ATTR_IPV4]); in ovs_key_from_nlattrs()
858 ipv6_key = nla_data(a[OVS_KEY_ATTR_IPV6]); in ovs_key_from_nlattrs()
896 arp_key = nla_data(a[OVS_KEY_ATTR_ARP]); in ovs_key_from_nlattrs()
920 mpls_key = nla_data(a[OVS_KEY_ATTR_MPLS]); in ovs_key_from_nlattrs()
930 tcp_key = nla_data(a[OVS_KEY_ATTR_TCP]); in ovs_key_from_nlattrs()
938 nla_get_be16(a[OVS_KEY_ATTR_TCP_FLAGS]), in ovs_key_from_nlattrs()
946 udp_key = nla_data(a[OVS_KEY_ATTR_UDP]); in ovs_key_from_nlattrs()
955 sctp_key = nla_data(a[OVS_KEY_ATTR_SCTP]); in ovs_key_from_nlattrs()
964 icmp_key = nla_data(a[OVS_KEY_ATTR_ICMP]); in ovs_key_from_nlattrs()
975 icmpv6_key = nla_data(a[OVS_KEY_ATTR_ICMPV6]); in ovs_key_from_nlattrs()
986 nd_key = nla_data(a[OVS_KEY_ATTR_ND]); in ovs_key_from_nlattrs()
1047 const struct nlattr *a[OVS_KEY_ATTR_MAX + 1]; in ovs_nla_get_match() local
1055 err = parse_flow_nlattrs(nla_key, a, &key_attrs, log); in ovs_nla_get_match()
1061 (nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]) == htons(ETH_P_8021Q))) { in ovs_nla_get_match()
1071 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_nla_get_match()
1072 encap = a[OVS_KEY_ATTR_ENCAP]; in ovs_nla_get_match()
1077 err = parse_flow_nlattrs(encap, a, &key_attrs, log); in ovs_nla_get_match()
1092 err = ovs_key_from_nlattrs(match, key_attrs, a, false, log); in ovs_nla_get_match()
1126 err = parse_flow_mask_nlattrs(nla_mask, a, &mask_attrs, log); in ovs_nla_get_match()
1144 if (a[OVS_KEY_ATTR_ETHERTYPE]) in ovs_nla_get_match()
1145 eth_type = nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]); in ovs_nla_get_match()
1149 encap = a[OVS_KEY_ATTR_ENCAP]; in ovs_nla_get_match()
1150 err = parse_flow_mask_nlattrs(encap, a, in ovs_nla_get_match()
1161 if (a[OVS_KEY_ATTR_VLAN]) in ovs_nla_get_match()
1162 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_nla_get_match()
1172 err = ovs_key_from_nlattrs(match, mask_attrs, a, true, log); in ovs_nla_get_match()
1257 const struct nlattr *a[OVS_KEY_ATTR_MAX + 1]; in ovs_nla_get_flow_metadata() local
1262 err = parse_flow_nlattrs(attr, a, &attrs, log); in ovs_nla_get_flow_metadata()
1271 return metadata_from_nlattrs(&match, &attrs, a, false, log); in ovs_nla_get_flow_metadata()
1596 struct nlattr *a; in __add_action() local
1598 a = reserve_sfa_size(sfa, nla_attr_size(len), log); in __add_action()
1599 if (IS_ERR(a)) in __add_action()
1600 return a; in __add_action()
1602 a->nla_type = attrtype; in __add_action()
1603 a->nla_len = nla_attr_size(len); in __add_action()
1606 memcpy(nla_data(a), data, len); in __add_action()
1607 memset((unsigned char *) a + a->nla_len, 0, nla_padlen(len)); in __add_action()
1609 return a; in __add_action()
1615 struct nlattr *a; in add_action() local
1617 a = __add_action(sfa, attrtype, data, len, log); in add_action()
1619 return PTR_ERR_OR_ZERO(a); in add_action()
1638 struct nlattr *a = (struct nlattr *) ((unsigned char *)sfa->actions + in add_nested_action_end() local
1641 a->nla_len = sfa->actions_len - st_offset; in add_nested_action_end()
1656 const struct nlattr *a; in validate_and_copy_sample() local
1660 nla_for_each_nested(a, attr, rem) { in validate_and_copy_sample()
1661 int type = nla_type(a); in validate_and_copy_sample()
1664 attrs[type] = a; in validate_and_copy_sample()
1750 struct nlattr *a; in validate_and_copy_set_tun() local
1774 a = __add_action(sfa, OVS_KEY_ATTR_TUNNEL_INFO, NULL, in validate_and_copy_set_tun()
1776 if (IS_ERR(a)) in validate_and_copy_set_tun()
1777 return PTR_ERR(a); in validate_and_copy_set_tun()
1779 tun_info = nla_data(a); in validate_and_copy_set_tun()
1814 static int validate_set(const struct nlattr *a, in validate_set() argument
1819 const struct nlattr *ovs_key = nla_data(a); in validate_set()
1824 if (nla_total_size(nla_len(ovs_key)) != nla_len(a)) in validate_set()
1857 err = validate_and_copy_set_tun(a, sfa, log); in validate_set()
1982 struct nlattr *a[OVS_USERSPACE_ATTR_MAX + 1]; in validate_userspace() local
1985 error = nla_parse_nested(a, OVS_USERSPACE_ATTR_MAX, in validate_userspace()
1990 if (!a[OVS_USERSPACE_ATTR_PID] || in validate_userspace()
1991 !nla_get_u32(a[OVS_USERSPACE_ATTR_PID])) in validate_userspace()
2016 const struct nlattr *a; in __ovs_nla_copy_actions() local
2022 nla_for_each_nested(a, attr, rem) { in __ovs_nla_copy_actions()
2038 int type = nla_type(a); in __ovs_nla_copy_actions()
2042 (action_lens[type] != nla_len(a) && in __ovs_nla_copy_actions()
2052 err = validate_userspace(a); in __ovs_nla_copy_actions()
2058 if (nla_get_u32(a) >= DP_MAX_PORTS) in __ovs_nla_copy_actions()
2063 const struct ovs_action_hash *act_hash = nla_data(a); in __ovs_nla_copy_actions()
2080 vlan = nla_data(a); in __ovs_nla_copy_actions()
2092 const struct ovs_action_push_mpls *mpls = nla_data(a); in __ovs_nla_copy_actions()
2128 err = validate_set(a, key, sfa, in __ovs_nla_copy_actions()
2135 err = validate_set(a, key, sfa, in __ovs_nla_copy_actions()
2142 err = validate_and_copy_sample(a, key, depth, sfa, in __ovs_nla_copy_actions()
2154 err = copy_action(a, sfa, log); in __ovs_nla_copy_actions()
2187 const struct nlattr *a; in sample_action_to_attr() local
2195 nla_for_each_nested(a, attr, rem) { in sample_action_to_attr()
2196 int type = nla_type(a); in sample_action_to_attr()
2202 sizeof(u32), nla_data(a))) in sample_action_to_attr()
2209 err = ovs_nla_put_actions(nla_data(a), nla_len(a), skb); in sample_action_to_attr()
2221 static int set_action_to_attr(const struct nlattr *a, struct sk_buff *skb) in set_action_to_attr() argument
2223 const struct nlattr *ovs_key = nla_data(a); in set_action_to_attr()
2246 if (nla_put(skb, OVS_ACTION_ATTR_SET, nla_len(a), ovs_key)) in set_action_to_attr()
2254 static int masked_set_action_to_set_action_attr(const struct nlattr *a, in masked_set_action_to_set_action_attr() argument
2257 const struct nlattr *ovs_key = nla_data(a); in masked_set_action_to_set_action_attr()
2277 const struct nlattr *a; in ovs_nla_put_actions() local
2280 nla_for_each_attr(a, attr, len, rem) { in ovs_nla_put_actions()
2281 int type = nla_type(a); in ovs_nla_put_actions()
2285 err = set_action_to_attr(a, skb); in ovs_nla_put_actions()
2291 err = masked_set_action_to_set_action_attr(a, skb); in ovs_nla_put_actions()
2297 err = sample_action_to_attr(a, skb); in ovs_nla_put_actions()
2302 if (nla_put(skb, type, nla_len(a), nla_data(a))) in ovs_nla_put_actions()