Lines Matching refs:a
286 const struct nlattr *a[], in __parse_flow_nlattrs() argument
319 a[type] = nla; in __parse_flow_nlattrs()
332 const struct nlattr *a[], u64 *attrsp) in parse_flow_mask_nlattrs() argument
334 return __parse_flow_nlattrs(attr, a, attrsp, true); in parse_flow_mask_nlattrs()
338 const struct nlattr *a[], u64 *attrsp) in parse_flow_nlattrs() argument
340 return __parse_flow_nlattrs(attr, a, attrsp, false); in parse_flow_nlattrs()
346 struct nlattr *a; in ipv4_tun_from_nlattr() local
352 nla_for_each_nested(a, attr, rem) { in ipv4_tun_from_nlattr()
353 int type = nla_type(a); in ipv4_tun_from_nlattr()
372 if (ovs_tunnel_key_lens[type] != nla_len(a) && in ipv4_tun_from_nlattr()
376 type, nla_len(a), ovs_tunnel_key_lens[type]); in ipv4_tun_from_nlattr()
383 nla_get_be64(a), is_mask); in ipv4_tun_from_nlattr()
388 nla_get_be32(a), is_mask); in ipv4_tun_from_nlattr()
392 nla_get_be32(a), is_mask); in ipv4_tun_from_nlattr()
396 nla_get_u8(a), is_mask); in ipv4_tun_from_nlattr()
400 nla_get_u8(a), is_mask); in ipv4_tun_from_nlattr()
414 if (nla_len(a) > sizeof(match->key->tun_opts)) { in ipv4_tun_from_nlattr()
416 nla_len(a), in ipv4_tun_from_nlattr()
421 if (nla_len(a) % 4 != 0) { in ipv4_tun_from_nlattr()
423 nla_len(a)); in ipv4_tun_from_nlattr()
432 SW_FLOW_KEY_PUT(match, tun_opts_len, nla_len(a), in ipv4_tun_from_nlattr()
445 if (match->key->tun_opts_len != nla_len(a)) { in ipv4_tun_from_nlattr()
448 nla_len(a)); in ipv4_tun_from_nlattr()
458 nla_len(a)); in ipv4_tun_from_nlattr()
460 nla_data(a), nla_len(a), in ipv4_tun_from_nlattr()
550 const struct nlattr **a, bool is_mask) in metadata_from_nlattrs() argument
553 u32 hash_val = nla_get_u32(a[OVS_KEY_ATTR_DP_HASH]); in metadata_from_nlattrs()
560 u32 recirc_id = nla_get_u32(a[OVS_KEY_ATTR_RECIRC_ID]); in metadata_from_nlattrs()
568 nla_get_u32(a[OVS_KEY_ATTR_PRIORITY]), is_mask); in metadata_from_nlattrs()
573 u32 in_port = nla_get_u32(a[OVS_KEY_ATTR_IN_PORT]); in metadata_from_nlattrs()
587 uint32_t mark = nla_get_u32(a[OVS_KEY_ATTR_SKB_MARK]); in metadata_from_nlattrs()
593 if (ipv4_tun_from_nlattr(a[OVS_KEY_ATTR_TUNNEL], match, in metadata_from_nlattrs()
602 const struct nlattr **a, bool is_mask) in ovs_key_from_nlattrs() argument
607 err = metadata_from_nlattrs(match, &attrs, a, is_mask); in ovs_key_from_nlattrs()
614 eth_key = nla_data(a[OVS_KEY_ATTR_ETHERNET]); in ovs_key_from_nlattrs()
625 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_key_from_nlattrs()
643 eth_type = nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]); in ovs_key_from_nlattrs()
662 ipv4_key = nla_data(a[OVS_KEY_ATTR_IPV4]); in ovs_key_from_nlattrs()
686 ipv6_key = nla_data(a[OVS_KEY_ATTR_IPV6]); in ovs_key_from_nlattrs()
724 arp_key = nla_data(a[OVS_KEY_ATTR_ARP]); in ovs_key_from_nlattrs()
748 tcp_key = nla_data(a[OVS_KEY_ATTR_TCP]); in ovs_key_from_nlattrs()
757 nla_get_be16(a[OVS_KEY_ATTR_TCP_FLAGS]), in ovs_key_from_nlattrs()
761 nla_get_be16(a[OVS_KEY_ATTR_TCP_FLAGS]), in ovs_key_from_nlattrs()
770 udp_key = nla_data(a[OVS_KEY_ATTR_UDP]); in ovs_key_from_nlattrs()
779 sctp_key = nla_data(a[OVS_KEY_ATTR_SCTP]); in ovs_key_from_nlattrs()
788 icmp_key = nla_data(a[OVS_KEY_ATTR_ICMP]); in ovs_key_from_nlattrs()
799 icmpv6_key = nla_data(a[OVS_KEY_ATTR_ICMPV6]); in ovs_key_from_nlattrs()
810 nd_key = nla_data(a[OVS_KEY_ATTR_ND]); in ovs_key_from_nlattrs()
866 const struct nlattr *a[OVS_KEY_ATTR_MAX + 1]; in ovs_nla_get_match() local
874 err = parse_flow_nlattrs(key, a, &key_attrs); in ovs_nla_get_match()
880 (nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]) == htons(ETH_P_8021Q))) { in ovs_nla_get_match()
890 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_nla_get_match()
891 encap = a[OVS_KEY_ATTR_ENCAP]; in ovs_nla_get_match()
896 err = parse_flow_nlattrs(encap, a, &key_attrs); in ovs_nla_get_match()
911 err = ovs_key_from_nlattrs(match, key_attrs, a, false); in ovs_nla_get_match()
941 err = parse_flow_mask_nlattrs(mask, a, &mask_attrs); in ovs_nla_get_match()
956 if (a[OVS_KEY_ATTR_ETHERTYPE]) in ovs_nla_get_match()
957 eth_type = nla_get_be16(a[OVS_KEY_ATTR_ETHERTYPE]); in ovs_nla_get_match()
961 encap = a[OVS_KEY_ATTR_ENCAP]; in ovs_nla_get_match()
962 err = parse_flow_mask_nlattrs(encap, a, &mask_attrs); in ovs_nla_get_match()
972 if (a[OVS_KEY_ATTR_VLAN]) in ovs_nla_get_match()
973 tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]); in ovs_nla_get_match()
982 err = ovs_key_from_nlattrs(match, mask_attrs, a, true); in ovs_nla_get_match()
1010 const struct nlattr *a[OVS_KEY_ATTR_MAX + 1]; in ovs_nla_get_flow_metadata() local
1015 err = parse_flow_nlattrs(attr, a, &attrs); in ovs_nla_get_flow_metadata()
1024 return metadata_from_nlattrs(&match, &attrs, a, false); in ovs_nla_get_flow_metadata()
1296 struct nlattr *a; in __add_action() local
1298 a = reserve_sfa_size(sfa, nla_attr_size(len)); in __add_action()
1299 if (IS_ERR(a)) in __add_action()
1300 return a; in __add_action()
1302 a->nla_type = attrtype; in __add_action()
1303 a->nla_len = nla_attr_size(len); in __add_action()
1306 memcpy(nla_data(a), data, len); in __add_action()
1307 memset((unsigned char *) a + a->nla_len, 0, nla_padlen(len)); in __add_action()
1309 return a; in __add_action()
1315 struct nlattr *a; in add_action() local
1317 a = __add_action(sfa, attrtype, data, len); in add_action()
1318 if (IS_ERR(a)) in add_action()
1319 return PTR_ERR(a); in add_action()
1340 struct nlattr *a = (struct nlattr *) ((unsigned char *)sfa->actions + in add_nested_action_end() local
1343 a->nla_len = sfa->actions_len - st_offset; in add_nested_action_end()
1352 const struct nlattr *a; in validate_and_copy_sample() local
1356 nla_for_each_nested(a, attr, rem) { in validate_and_copy_sample()
1357 int type = nla_type(a); in validate_and_copy_sample()
1360 attrs[type] = a; in validate_and_copy_sample()
1427 struct nlattr *a; in validate_and_copy_set_tun() local
1464 a = __add_action(sfa, OVS_KEY_ATTR_TUNNEL_INFO, NULL, in validate_and_copy_set_tun()
1466 if (IS_ERR(a)) in validate_and_copy_set_tun()
1467 return PTR_ERR(a); in validate_and_copy_set_tun()
1469 tun_info = nla_data(a); in validate_and_copy_set_tun()
1490 static int validate_set(const struct nlattr *a, in validate_set() argument
1495 const struct nlattr *ovs_key = nla_data(a); in validate_set()
1499 if (nla_total_size(nla_len(ovs_key)) != nla_len(a)) in validate_set()
1519 err = validate_and_copy_set_tun(a, sfa); in validate_set()
1590 struct nlattr *a[OVS_USERSPACE_ATTR_MAX + 1]; in validate_userspace() local
1593 error = nla_parse_nested(a, OVS_USERSPACE_ATTR_MAX, in validate_userspace()
1598 if (!a[OVS_USERSPACE_ATTR_PID] || in validate_userspace()
1599 !nla_get_u32(a[OVS_USERSPACE_ATTR_PID])) in validate_userspace()
1624 const struct nlattr *a; in ovs_nla_copy_actions() local
1630 nla_for_each_nested(a, attr, rem) { in ovs_nla_copy_actions()
1643 int type = nla_type(a); in ovs_nla_copy_actions()
1647 (action_lens[type] != nla_len(a) && in ovs_nla_copy_actions()
1657 err = validate_userspace(a); in ovs_nla_copy_actions()
1663 if (nla_get_u32(a) >= DP_MAX_PORTS) in ovs_nla_copy_actions()
1668 const struct ovs_action_hash *act_hash = nla_data(a); in ovs_nla_copy_actions()
1684 vlan = nla_data(a); in ovs_nla_copy_actions()
1695 err = validate_set(a, key, sfa, &skip_copy); in ovs_nla_copy_actions()
1701 err = validate_and_copy_sample(a, key, depth, sfa); in ovs_nla_copy_actions()
1711 err = copy_action(a, sfa); in ovs_nla_copy_actions()
1725 const struct nlattr *a; in sample_action_to_attr() local
1733 nla_for_each_nested(a, attr, rem) { in sample_action_to_attr()
1734 int type = nla_type(a); in sample_action_to_attr()
1740 sizeof(u32), nla_data(a))) in sample_action_to_attr()
1747 err = ovs_nla_put_actions(nla_data(a), nla_len(a), skb); in sample_action_to_attr()
1759 static int set_action_to_attr(const struct nlattr *a, struct sk_buff *skb) in set_action_to_attr() argument
1761 const struct nlattr *ovs_key = nla_data(a); in set_action_to_attr()
1784 if (nla_put(skb, OVS_ACTION_ATTR_SET, nla_len(a), ovs_key)) in set_action_to_attr()
1794 const struct nlattr *a; in ovs_nla_put_actions() local
1797 nla_for_each_attr(a, attr, len, rem) { in ovs_nla_put_actions()
1798 int type = nla_type(a); in ovs_nla_put_actions()
1802 err = set_action_to_attr(a, skb); in ovs_nla_put_actions()
1808 err = sample_action_to_attr(a, skb); in ovs_nla_put_actions()
1813 if (nla_put(skb, type, nla_len(a), nla_data(a))) in ovs_nla_put_actions()