Lines Matching +full:non +full:- +full:masked
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2007-2017 Nicira, Inc.
49 #define OVS_ATTR_NESTED -1
50 #define OVS_ATTR_VARIABLE -2
102 range = &match->range; in update_range()
104 range = &match->mask->range; in update_range()
106 if (range->start == range->end) { in update_range()
107 range->start = start; in update_range()
108 range->end = end; in update_range()
112 if (range->start > start) in update_range()
113 range->start = start; in update_range()
115 if (range->end < end) in update_range()
116 range->end = end; in update_range()
122 sizeof((match)->key->field), is_mask); \
124 (match)->mask->key.field = value; \
126 (match)->key->field = value; \
133 memcpy((u8 *)&(match)->mask->key + offset, value_p, \
136 memcpy((u8 *)(match)->key + offset, value_p, len); \
146 sizeof((match)->key->field), is_mask); \
148 memset((u8 *)&(match)->mask->key.field, value, \
149 sizeof((match)->mask->key.field)); \
151 memset((u8 *)&(match)->key->field, value, \
152 sizeof((match)->key->field)); \
184 if (match->key->eth.type == htons(ETH_P_ARP) in match_validate()
185 || match->key->eth.type == htons(ETH_P_RARP)) { in match_validate()
187 if (match->mask && (match->mask->key.eth.type == htons(0xffff))) in match_validate()
191 if (eth_p_mpls(match->key->eth.type)) { in match_validate()
193 if (match->mask && (match->mask->key.eth.type == htons(0xffff))) in match_validate()
197 if (match->key->eth.type == htons(ETH_P_IP)) { in match_validate()
199 if (match->mask && match->mask->key.eth.type == htons(0xffff)) { in match_validate()
204 if (match->key->ip.frag != OVS_FRAG_TYPE_LATER) { in match_validate()
205 if (match->key->ip.proto == IPPROTO_UDP) { in match_validate()
207 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
211 if (match->key->ip.proto == IPPROTO_SCTP) { in match_validate()
213 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
217 if (match->key->ip.proto == IPPROTO_TCP) { in match_validate()
220 if (match->mask && (match->mask->key.ip.proto == 0xff)) { in match_validate()
226 if (match->key->ip.proto == IPPROTO_ICMP) { in match_validate()
228 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
234 if (match->key->eth.type == htons(ETH_P_IPV6)) { in match_validate()
236 if (match->mask && match->mask->key.eth.type == htons(0xffff)) { in match_validate()
241 if (match->key->ip.frag != OVS_FRAG_TYPE_LATER) { in match_validate()
242 if (match->key->ip.proto == IPPROTO_UDP) { in match_validate()
244 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
248 if (match->key->ip.proto == IPPROTO_SCTP) { in match_validate()
250 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
254 if (match->key->ip.proto == IPPROTO_TCP) { in match_validate()
257 if (match->mask && (match->mask->key.ip.proto == 0xff)) { in match_validate()
263 if (match->key->ip.proto == IPPROTO_ICMPV6) { in match_validate()
265 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
268 if (match->key->tp.src == in match_validate()
270 match->key->tp.src == htons(NDISC_NEIGHBOUR_ADVERTISEMENT)) { in match_validate()
278 if (match->mask && (match->mask->key.tp.src == htons(0xff))) in match_validate()
285 if (match->key->eth.type == htons(ETH_P_NSH)) { in match_validate()
287 if (match->mask && in match_validate()
288 match->mask->key.eth.type == htons(0xffff)) { in match_validate()
485 return -EINVAL; in __parse_flow_nlattrs()
492 return -EINVAL; in __parse_flow_nlattrs()
497 return -EINVAL; in __parse_flow_nlattrs()
504 return -EINVAL; in __parse_flow_nlattrs()
514 return -EINVAL; in __parse_flow_nlattrs()
540 if (nla_len(a) > sizeof(match->key->tun_opts)) { in genev_tun_opt_from_nlattr()
542 nla_len(a), sizeof(match->key->tun_opts)); in genev_tun_opt_from_nlattr()
543 return -EINVAL; in genev_tun_opt_from_nlattr()
549 return -EINVAL; in genev_tun_opt_from_nlattr()
570 if (match->key->tun_opts_len != nla_len(a)) { in genev_tun_opt_from_nlattr()
572 match->key->tun_opts_len, nla_len(a)); in genev_tun_opt_from_nlattr()
573 return -EINVAL; in genev_tun_opt_from_nlattr()
594 BUILD_BUG_ON(sizeof(opts) > sizeof(match->key->tun_opts)); in vxlan_tun_opt_from_nlattr()
603 return -EINVAL; in vxlan_tun_opt_from_nlattr()
611 return -EINVAL; in vxlan_tun_opt_from_nlattr()
621 return -EINVAL; in vxlan_tun_opt_from_nlattr()
627 return -EINVAL; in vxlan_tun_opt_from_nlattr()
648 sizeof(match->key->tun_opts)); in erspan_tun_opt_from_nlattr()
650 if (nla_len(a) > sizeof(match->key->tun_opts)) { in erspan_tun_opt_from_nlattr()
652 nla_len(a), sizeof(match->key->tun_opts)); in erspan_tun_opt_from_nlattr()
653 return -EINVAL; in erspan_tun_opt_from_nlattr()
686 return -EINVAL; in ip_tun_from_nlattr()
693 return -EINVAL; in ip_tun_from_nlattr()
751 return -EINVAL; in ip_tun_from_nlattr()
764 return -EINVAL; in ip_tun_from_nlattr()
779 return -EINVAL; in ip_tun_from_nlattr()
797 return -EINVAL; in ip_tun_from_nlattr()
811 return -EINVAL; in ip_tun_from_nlattr()
816 return -EINVAL; in ip_tun_from_nlattr()
822 return -EINVAL; in ip_tun_from_nlattr()
826 if (match->key->tun_key.u.ipv4.src || in ip_tun_from_nlattr()
827 match->key->tun_key.u.ipv4.dst || in ip_tun_from_nlattr()
828 match->key->tun_key.tp_src || in ip_tun_from_nlattr()
829 match->key->tun_key.tp_dst || in ip_tun_from_nlattr()
830 match->key->tun_key.ttl || in ip_tun_from_nlattr()
831 match->key->tun_key.tos || in ip_tun_from_nlattr()
834 return -EINVAL; in ip_tun_from_nlattr()
836 } else if (!match->key->tun_key.u.ipv4.dst) { in ip_tun_from_nlattr()
838 return -EINVAL; in ip_tun_from_nlattr()
841 if (ipv6 && ipv6_addr_any(&match->key->tun_key.u.ipv6.dst)) { in ip_tun_from_nlattr()
843 return -EINVAL; in ip_tun_from_nlattr()
848 return -EINVAL; in ip_tun_from_nlattr()
863 return -EMSGSIZE; in vxlan_opt_to_nlattr()
865 if (nla_put_u32(skb, OVS_VXLAN_EXT_GBP, opts->gbp) < 0) in vxlan_opt_to_nlattr()
866 return -EMSGSIZE; in vxlan_opt_to_nlattr()
877 if (output->tun_flags & TUNNEL_KEY && in __ip_tun_to_nlattr()
878 nla_put_be64(skb, OVS_TUNNEL_KEY_ATTR_ID, output->tun_id, in __ip_tun_to_nlattr()
880 return -EMSGSIZE; in __ip_tun_to_nlattr()
884 ? -EMSGSIZE : 0; in __ip_tun_to_nlattr()
888 if (output->u.ipv4.src && in __ip_tun_to_nlattr()
890 output->u.ipv4.src)) in __ip_tun_to_nlattr()
891 return -EMSGSIZE; in __ip_tun_to_nlattr()
892 if (output->u.ipv4.dst && in __ip_tun_to_nlattr()
894 output->u.ipv4.dst)) in __ip_tun_to_nlattr()
895 return -EMSGSIZE; in __ip_tun_to_nlattr()
898 if (!ipv6_addr_any(&output->u.ipv6.src) && in __ip_tun_to_nlattr()
900 &output->u.ipv6.src)) in __ip_tun_to_nlattr()
901 return -EMSGSIZE; in __ip_tun_to_nlattr()
902 if (!ipv6_addr_any(&output->u.ipv6.dst) && in __ip_tun_to_nlattr()
904 &output->u.ipv6.dst)) in __ip_tun_to_nlattr()
905 return -EMSGSIZE; in __ip_tun_to_nlattr()
908 if (output->tos && in __ip_tun_to_nlattr()
909 nla_put_u8(skb, OVS_TUNNEL_KEY_ATTR_TOS, output->tos)) in __ip_tun_to_nlattr()
910 return -EMSGSIZE; in __ip_tun_to_nlattr()
911 if (nla_put_u8(skb, OVS_TUNNEL_KEY_ATTR_TTL, output->ttl)) in __ip_tun_to_nlattr()
912 return -EMSGSIZE; in __ip_tun_to_nlattr()
913 if ((output->tun_flags & TUNNEL_DONT_FRAGMENT) && in __ip_tun_to_nlattr()
915 return -EMSGSIZE; in __ip_tun_to_nlattr()
916 if ((output->tun_flags & TUNNEL_CSUM) && in __ip_tun_to_nlattr()
918 return -EMSGSIZE; in __ip_tun_to_nlattr()
919 if (output->tp_src && in __ip_tun_to_nlattr()
920 nla_put_be16(skb, OVS_TUNNEL_KEY_ATTR_TP_SRC, output->tp_src)) in __ip_tun_to_nlattr()
921 return -EMSGSIZE; in __ip_tun_to_nlattr()
922 if (output->tp_dst && in __ip_tun_to_nlattr()
923 nla_put_be16(skb, OVS_TUNNEL_KEY_ATTR_TP_DST, output->tp_dst)) in __ip_tun_to_nlattr()
924 return -EMSGSIZE; in __ip_tun_to_nlattr()
925 if ((output->tun_flags & TUNNEL_OAM) && in __ip_tun_to_nlattr()
927 return -EMSGSIZE; in __ip_tun_to_nlattr()
929 if (output->tun_flags & TUNNEL_GENEVE_OPT && in __ip_tun_to_nlattr()
932 return -EMSGSIZE; in __ip_tun_to_nlattr()
933 else if (output->tun_flags & TUNNEL_VXLAN_OPT && in __ip_tun_to_nlattr()
935 return -EMSGSIZE; in __ip_tun_to_nlattr()
936 else if (output->tun_flags & TUNNEL_ERSPAN_OPT && in __ip_tun_to_nlattr()
939 return -EMSGSIZE; in __ip_tun_to_nlattr()
955 return -EMSGSIZE; in ip_tun_to_nlattr()
969 return __ip_tun_to_nlattr(skb, &tun_info->key, in ovs_nla_put_tunnel_info()
971 tun_info->options_len, in ovs_nla_put_tunnel_info()
972 ip_tunnel_info_af(tun_info), tun_info->mode); in ovs_nla_put_tunnel_info()
1013 OVS_NLERR(log, "Invalid %s frame", (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_from_nlattrs()
1014 return -EINVAL; in validate_vlan_from_nlattrs()
1023 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_from_nlattrs()
1024 return -EINVAL; in validate_vlan_from_nlattrs()
1027 OVS_NLERR(log, "Truncated %s header has non-zero encap attribute.", in validate_vlan_from_nlattrs()
1028 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_from_nlattrs()
1029 return -EINVAL; in validate_vlan_from_nlattrs()
1042 bool encap_valid = !!(match->key->eth.vlan.tci & in validate_vlan_mask_from_nlattrs()
1044 bool i_encap_valid = !!(match->key->eth.cvlan.tci & in validate_vlan_mask_from_nlattrs()
1053 OVS_NLERR(log, "Encap mask attribute is set for non-%s frame.", in validate_vlan_mask_from_nlattrs()
1054 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_mask_from_nlattrs()
1055 return -EINVAL; in validate_vlan_mask_from_nlattrs()
1066 (inner) ? "C-VLAN" : "VLAN", ntohs(tpid)); in validate_vlan_mask_from_nlattrs()
1067 return -EINVAL; in validate_vlan_mask_from_nlattrs()
1071 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_mask_from_nlattrs()
1072 return -EINVAL; in validate_vlan_mask_from_nlattrs()
1125 encap_valid = !!(match->key->eth.vlan.tci & htons(VLAN_CFI_MASK)); in parse_vlan_from_nlattrs()
1149 return -EINVAL; in parse_eth_type_from_nlattrs()
1191 return -EINVAL; in metadata_from_nlattrs()
1209 return -EINVAL; in metadata_from_nlattrs()
1220 return -EINVAL; in metadata_from_nlattrs()
1245 SW_FLOW_KEY_MEMCPY(match, ct.labels, cl->ct_labels, in metadata_from_nlattrs()
1254 SW_FLOW_KEY_PUT(match, ipv4.ct_orig.src, ct->ipv4_src, is_mask); in metadata_from_nlattrs()
1255 SW_FLOW_KEY_PUT(match, ipv4.ct_orig.dst, ct->ipv4_dst, is_mask); in metadata_from_nlattrs()
1256 SW_FLOW_KEY_PUT(match, ct.orig_tp.src, ct->src_port, is_mask); in metadata_from_nlattrs()
1257 SW_FLOW_KEY_PUT(match, ct.orig_tp.dst, ct->dst_port, is_mask); in metadata_from_nlattrs()
1258 SW_FLOW_KEY_PUT(match, ct_orig_proto, ct->ipv4_proto, is_mask); in metadata_from_nlattrs()
1266 SW_FLOW_KEY_MEMCPY(match, ipv6.ct_orig.src, &ct->ipv6_src, in metadata_from_nlattrs()
1267 sizeof(match->key->ipv6.ct_orig.src), in metadata_from_nlattrs()
1269 SW_FLOW_KEY_MEMCPY(match, ipv6.ct_orig.dst, &ct->ipv6_dst, in metadata_from_nlattrs()
1270 sizeof(match->key->ipv6.ct_orig.dst), in metadata_from_nlattrs()
1272 SW_FLOW_KEY_PUT(match, ct.orig_tp.src, ct->src_port, is_mask); in metadata_from_nlattrs()
1273 SW_FLOW_KEY_PUT(match, ct.orig_tp.dst, ct->dst_port, is_mask); in metadata_from_nlattrs()
1274 SW_FLOW_KEY_PUT(match, ct_orig_proto, ct->ipv6_proto, is_mask); in metadata_from_nlattrs()
1307 return -ENOBUFS; in nsh_hdr_from_nlattr()
1316 flags = base->flags; in nsh_hdr_from_nlattr()
1317 ttl = base->ttl; in nsh_hdr_from_nlattr()
1318 nh->np = base->np; in nsh_hdr_from_nlattr()
1319 nh->mdtype = base->mdtype; in nsh_hdr_from_nlattr()
1320 nh->path_hdr = base->path_hdr; in nsh_hdr_from_nlattr()
1325 if (mdlen > size - NSH_BASE_HDR_LEN) in nsh_hdr_from_nlattr()
1326 return -ENOBUFS; in nsh_hdr_from_nlattr()
1327 memcpy(&nh->md1, nla_data(a), mdlen); in nsh_hdr_from_nlattr()
1332 if (mdlen > size - NSH_BASE_HDR_LEN) in nsh_hdr_from_nlattr()
1333 return -ENOBUFS; in nsh_hdr_from_nlattr()
1334 memcpy(&nh->md2, nla_data(a), mdlen); in nsh_hdr_from_nlattr()
1338 return -EINVAL; in nsh_hdr_from_nlattr()
1343 nh->ver_flags_ttl_len = 0; in nsh_hdr_from_nlattr()
1365 nsh->base = *base; in nsh_key_from_nlattr()
1366 nsh_mask->base = *base_mask; in nsh_key_from_nlattr()
1373 memcpy(nsh->context, md1->context, sizeof(*md1)); in nsh_key_from_nlattr()
1374 memcpy(nsh_mask->context, md1_mask->context, in nsh_key_from_nlattr()
1380 return -ENOTSUPP; in nsh_key_from_nlattr()
1382 return -EINVAL; in nsh_key_from_nlattr()
1402 return -EINVAL; in nsh_key_put_from_nlattr()
1411 return -EINVAL; in nsh_key_put_from_nlattr()
1423 return -EINVAL; in nsh_key_put_from_nlattr()
1431 mdtype = base->mdtype; in nsh_key_put_from_nlattr()
1433 base->flags, is_mask); in nsh_key_put_from_nlattr()
1435 base->ttl, is_mask); in nsh_key_put_from_nlattr()
1437 base->mdtype, is_mask); in nsh_key_put_from_nlattr()
1439 base->np, is_mask); in nsh_key_put_from_nlattr()
1441 base->path_hdr, is_mask); in nsh_key_put_from_nlattr()
1450 md1->context[i], is_mask); in nsh_key_put_from_nlattr()
1455 return -ENOTSUPP; in nsh_key_put_from_nlattr()
1466 return -EINVAL; in nsh_key_put_from_nlattr()
1472 return -EINVAL; in nsh_key_put_from_nlattr()
1478 return -EINVAL; in nsh_key_put_from_nlattr()
1486 return -EINVAL; in nsh_key_put_from_nlattr()
1494 return -EINVAL; in nsh_key_put_from_nlattr()
1503 return -EINVAL; in nsh_key_put_from_nlattr()
1525 eth_key->eth_src, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1527 eth_key->eth_dst, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1535 return -EINVAL; in ovs_key_from_nlattrs()
1546 } else if (!match->key->eth.type) { in ovs_key_from_nlattrs()
1548 return -EINVAL; in ovs_key_from_nlattrs()
1555 if (!is_mask && ipv4_key->ipv4_frag > OVS_FRAG_TYPE_MAX) { in ovs_key_from_nlattrs()
1557 ipv4_key->ipv4_frag, OVS_FRAG_TYPE_MAX); in ovs_key_from_nlattrs()
1558 return -EINVAL; in ovs_key_from_nlattrs()
1561 ipv4_key->ipv4_proto, is_mask); in ovs_key_from_nlattrs()
1563 ipv4_key->ipv4_tos, is_mask); in ovs_key_from_nlattrs()
1565 ipv4_key->ipv4_ttl, is_mask); in ovs_key_from_nlattrs()
1567 ipv4_key->ipv4_frag, is_mask); in ovs_key_from_nlattrs()
1569 ipv4_key->ipv4_src, is_mask); in ovs_key_from_nlattrs()
1571 ipv4_key->ipv4_dst, is_mask); in ovs_key_from_nlattrs()
1579 if (!is_mask && ipv6_key->ipv6_frag > OVS_FRAG_TYPE_MAX) { in ovs_key_from_nlattrs()
1581 ipv6_key->ipv6_frag, OVS_FRAG_TYPE_MAX); in ovs_key_from_nlattrs()
1582 return -EINVAL; in ovs_key_from_nlattrs()
1585 if (!is_mask && ipv6_key->ipv6_label & htonl(0xFFF00000)) { in ovs_key_from_nlattrs()
1587 ntohl(ipv6_key->ipv6_label), (1 << 20) - 1); in ovs_key_from_nlattrs()
1588 return -EINVAL; in ovs_key_from_nlattrs()
1592 ipv6_key->ipv6_label, is_mask); in ovs_key_from_nlattrs()
1594 ipv6_key->ipv6_proto, is_mask); in ovs_key_from_nlattrs()
1596 ipv6_key->ipv6_tclass, is_mask); in ovs_key_from_nlattrs()
1598 ipv6_key->ipv6_hlimit, is_mask); in ovs_key_from_nlattrs()
1600 ipv6_key->ipv6_frag, is_mask); in ovs_key_from_nlattrs()
1602 ipv6_key->ipv6_src, in ovs_key_from_nlattrs()
1603 sizeof(match->key->ipv6.addr.src), in ovs_key_from_nlattrs()
1606 ipv6_key->ipv6_dst, in ovs_key_from_nlattrs()
1607 sizeof(match->key->ipv6.addr.dst), in ovs_key_from_nlattrs()
1619 ipv6_exthdrs_key->hdrs, is_mask); in ovs_key_from_nlattrs()
1628 if (!is_mask && (arp_key->arp_op & htons(0xff00))) { in ovs_key_from_nlattrs()
1630 arp_key->arp_op); in ovs_key_from_nlattrs()
1631 return -EINVAL; in ovs_key_from_nlattrs()
1635 arp_key->arp_sip, is_mask); in ovs_key_from_nlattrs()
1637 arp_key->arp_tip, is_mask); in ovs_key_from_nlattrs()
1639 ntohs(arp_key->arp_op), is_mask); in ovs_key_from_nlattrs()
1641 arp_key->arp_sha, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1643 arp_key->arp_tha, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1651 return -EINVAL; in ovs_key_from_nlattrs()
1666 return -EINVAL; in ovs_key_from_nlattrs()
1668 label_count_mask = GENMASK(label_count - 1, 0); in ovs_key_from_nlattrs()
1684 SW_FLOW_KEY_PUT(match, tp.src, tcp_key->tcp_src, is_mask); in ovs_key_from_nlattrs()
1685 SW_FLOW_KEY_PUT(match, tp.dst, tcp_key->tcp_dst, is_mask); in ovs_key_from_nlattrs()
1700 SW_FLOW_KEY_PUT(match, tp.src, udp_key->udp_src, is_mask); in ovs_key_from_nlattrs()
1701 SW_FLOW_KEY_PUT(match, tp.dst, udp_key->udp_dst, is_mask); in ovs_key_from_nlattrs()
1709 SW_FLOW_KEY_PUT(match, tp.src, sctp_key->sctp_src, is_mask); in ovs_key_from_nlattrs()
1710 SW_FLOW_KEY_PUT(match, tp.dst, sctp_key->sctp_dst, is_mask); in ovs_key_from_nlattrs()
1719 htons(icmp_key->icmp_type), is_mask); in ovs_key_from_nlattrs()
1721 htons(icmp_key->icmp_code), is_mask); in ovs_key_from_nlattrs()
1730 htons(icmpv6_key->icmpv6_type), is_mask); in ovs_key_from_nlattrs()
1732 htons(icmpv6_key->icmpv6_code), is_mask); in ovs_key_from_nlattrs()
1741 nd_key->nd_target, in ovs_key_from_nlattrs()
1742 sizeof(match->key->ipv6.nd.target), in ovs_key_from_nlattrs()
1745 nd_key->nd_sll, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1747 nd_key->nd_tll, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1754 return -EINVAL; in ovs_key_from_nlattrs()
1784 * ovs_nla_get_match - parses Netlink attributes into a flow key and
1788 * @net: Used to determine per-namespace field support.
1822 if (match->mask) { in ovs_nla_get_match()
1825 * all the 'match->mask' fields that have been touched in ovs_nla_get_match()
1826 * in 'match->key'. We cannot simply memset in ovs_nla_get_match()
1827 * 'match->mask', because padding bytes and fields not in ovs_nla_get_match()
1828 * specified in 'match->key' should be left to 0. in ovs_nla_get_match()
1832 * 'match->mask' appropriately. in ovs_nla_get_match()
1838 return -ENOMEM; in ovs_nla_get_match()
1845 if (match->key->tun_proto) in ovs_nla_get_match()
1871 err = -EINVAL; in ovs_nla_get_match()
1895 /* Initializes 'flow->ufid', returning true if 'attr' contains a valid UFID,
1901 sfid->ufid_len = get_ufid_len(attr, log); in ovs_nla_get_ufid()
1902 if (sfid->ufid_len) in ovs_nla_get_ufid()
1903 memcpy(sfid->ufid, nla_data(attr), sfid->ufid_len); in ovs_nla_get_ufid()
1905 return sfid->ufid_len; in ovs_nla_get_ufid()
1919 return -ENOMEM; in ovs_nla_get_identifier()
1921 sfid->unmasked_key = new_key; in ovs_nla_get_identifier()
1932 * ovs_nla_get_flow_metadata - parses Netlink attributes into a flow key.
1960 key->ct_state = 0; in ovs_nla_get_flow_metadata()
1961 key->ct_zone = 0; in ovs_nla_get_flow_metadata()
1962 key->ct_orig_proto = 0; in ovs_nla_get_flow_metadata()
1963 memset(&key->ct, 0, sizeof(key->ct)); in ovs_nla_get_flow_metadata()
1964 memset(&key->ipv4.ct_orig, 0, sizeof(key->ipv4.ct_orig)); in ovs_nla_get_flow_metadata()
1965 memset(&key->ipv6.ct_orig, 0, sizeof(key->ipv6.ct_orig)); in ovs_nla_get_flow_metadata()
1967 key->phy.in_port = DP_MAX_PORTS; in ovs_nla_get_flow_metadata()
1975 __be16 eth_type = !is_mask ? vh->tpid : htons(0xffff); in ovs_nla_put_vlan()
1978 nla_put_be16(skb, OVS_KEY_ATTR_VLAN, vh->tci)) in ovs_nla_put_vlan()
1979 return -EMSGSIZE; in ovs_nla_put_vlan()
1990 return -EMSGSIZE; in nsh_key_to_nlattr()
1992 if (nla_put(skb, OVS_NSH_KEY_ATTR_BASE, sizeof(nsh->base), &nsh->base)) in nsh_key_to_nlattr()
1995 if (is_mask || nsh->base.mdtype == NSH_M_TYPE1) { in nsh_key_to_nlattr()
1997 sizeof(nsh->context), nsh->context)) in nsh_key_to_nlattr()
2008 return -EMSGSIZE; in nsh_key_to_nlattr()
2020 if (nla_put_u32(skb, OVS_KEY_ATTR_RECIRC_ID, output->recirc_id)) in __ovs_nla_put_key()
2023 if (nla_put_u32(skb, OVS_KEY_ATTR_DP_HASH, output->ovs_flow_hash)) in __ovs_nla_put_key()
2026 if (nla_put_u32(skb, OVS_KEY_ATTR_PRIORITY, output->phy.priority)) in __ovs_nla_put_key()
2029 if ((swkey->tun_proto || is_mask)) { in __ovs_nla_put_key()
2032 if (output->tun_key.tun_flags & TUNNEL_OPTIONS_PRESENT) in __ovs_nla_put_key()
2033 opts = TUN_METADATA_OPTS(output, swkey->tun_opts_len); in __ovs_nla_put_key()
2035 if (ip_tun_to_nlattr(skb, &output->tun_key, opts, in __ovs_nla_put_key()
2036 swkey->tun_opts_len, swkey->tun_proto, 0)) in __ovs_nla_put_key()
2040 if (swkey->phy.in_port == DP_MAX_PORTS) { in __ovs_nla_put_key()
2041 if (is_mask && (output->phy.in_port == 0xffff)) in __ovs_nla_put_key()
2049 (upper_u16 << 16) | output->phy.in_port)) in __ovs_nla_put_key()
2053 if (nla_put_u32(skb, OVS_KEY_ATTR_SKB_MARK, output->phy.skb_mark)) in __ovs_nla_put_key()
2065 ether_addr_copy(eth_key->eth_src, output->eth.src); in __ovs_nla_put_key()
2066 ether_addr_copy(eth_key->eth_dst, output->eth.dst); in __ovs_nla_put_key()
2068 if (swkey->eth.vlan.tci || eth_type_vlan(swkey->eth.type)) { in __ovs_nla_put_key()
2069 if (ovs_nla_put_vlan(skb, &output->eth.vlan, is_mask)) in __ovs_nla_put_key()
2072 if (!swkey->eth.vlan.tci) in __ovs_nla_put_key()
2075 if (swkey->eth.cvlan.tci || eth_type_vlan(swkey->eth.type)) { in __ovs_nla_put_key()
2076 if (ovs_nla_put_vlan(skb, &output->eth.cvlan, is_mask)) in __ovs_nla_put_key()
2080 if (!swkey->eth.cvlan.tci) in __ovs_nla_put_key()
2085 if (swkey->eth.type == htons(ETH_P_802_2)) { in __ovs_nla_put_key()
2092 if (is_mask && output->eth.type) in __ovs_nla_put_key()
2094 output->eth.type)) in __ovs_nla_put_key()
2100 if (nla_put_be16(skb, OVS_KEY_ATTR_ETHERTYPE, output->eth.type)) in __ovs_nla_put_key()
2103 if (eth_type_vlan(swkey->eth.type)) { in __ovs_nla_put_key()
2111 if (swkey->eth.type == htons(ETH_P_IP)) { in __ovs_nla_put_key()
2118 ipv4_key->ipv4_src = output->ipv4.addr.src; in __ovs_nla_put_key()
2119 ipv4_key->ipv4_dst = output->ipv4.addr.dst; in __ovs_nla_put_key()
2120 ipv4_key->ipv4_proto = output->ip.proto; in __ovs_nla_put_key()
2121 ipv4_key->ipv4_tos = output->ip.tos; in __ovs_nla_put_key()
2122 ipv4_key->ipv4_ttl = output->ip.ttl; in __ovs_nla_put_key()
2123 ipv4_key->ipv4_frag = output->ip.frag; in __ovs_nla_put_key()
2124 } else if (swkey->eth.type == htons(ETH_P_IPV6)) { in __ovs_nla_put_key()
2132 memcpy(ipv6_key->ipv6_src, &output->ipv6.addr.src, in __ovs_nla_put_key()
2133 sizeof(ipv6_key->ipv6_src)); in __ovs_nla_put_key()
2134 memcpy(ipv6_key->ipv6_dst, &output->ipv6.addr.dst, in __ovs_nla_put_key()
2135 sizeof(ipv6_key->ipv6_dst)); in __ovs_nla_put_key()
2136 ipv6_key->ipv6_label = output->ipv6.label; in __ovs_nla_put_key()
2137 ipv6_key->ipv6_proto = output->ip.proto; in __ovs_nla_put_key()
2138 ipv6_key->ipv6_tclass = output->ip.tos; in __ovs_nla_put_key()
2139 ipv6_key->ipv6_hlimit = output->ip.ttl; in __ovs_nla_put_key()
2140 ipv6_key->ipv6_frag = output->ip.frag; in __ovs_nla_put_key()
2147 ipv6_exthdrs_key->hdrs = output->ipv6.exthdrs; in __ovs_nla_put_key()
2148 } else if (swkey->eth.type == htons(ETH_P_NSH)) { in __ovs_nla_put_key()
2149 if (nsh_key_to_nlattr(&output->nsh, is_mask, skb)) in __ovs_nla_put_key()
2151 } else if (swkey->eth.type == htons(ETH_P_ARP) || in __ovs_nla_put_key()
2152 swkey->eth.type == htons(ETH_P_RARP)) { in __ovs_nla_put_key()
2160 arp_key->arp_sip = output->ipv4.addr.src; in __ovs_nla_put_key()
2161 arp_key->arp_tip = output->ipv4.addr.dst; in __ovs_nla_put_key()
2162 arp_key->arp_op = htons(output->ip.proto); in __ovs_nla_put_key()
2163 ether_addr_copy(arp_key->arp_sha, output->ipv4.arp.sha); in __ovs_nla_put_key()
2164 ether_addr_copy(arp_key->arp_tha, output->ipv4.arp.tha); in __ovs_nla_put_key()
2165 } else if (eth_p_mpls(swkey->eth.type)) { in __ovs_nla_put_key()
2169 num_labels = hweight_long(output->mpls.num_labels_mask); in __ovs_nla_put_key()
2177 mpls_key[i].mpls_lse = output->mpls.lse[i]; in __ovs_nla_put_key()
2180 if ((swkey->eth.type == htons(ETH_P_IP) || in __ovs_nla_put_key()
2181 swkey->eth.type == htons(ETH_P_IPV6)) && in __ovs_nla_put_key()
2182 swkey->ip.frag != OVS_FRAG_TYPE_LATER) { in __ovs_nla_put_key()
2184 if (swkey->ip.proto == IPPROTO_TCP) { in __ovs_nla_put_key()
2191 tcp_key->tcp_src = output->tp.src; in __ovs_nla_put_key()
2192 tcp_key->tcp_dst = output->tp.dst; in __ovs_nla_put_key()
2194 output->tp.flags)) in __ovs_nla_put_key()
2196 } else if (swkey->ip.proto == IPPROTO_UDP) { in __ovs_nla_put_key()
2203 udp_key->udp_src = output->tp.src; in __ovs_nla_put_key()
2204 udp_key->udp_dst = output->tp.dst; in __ovs_nla_put_key()
2205 } else if (swkey->ip.proto == IPPROTO_SCTP) { in __ovs_nla_put_key()
2212 sctp_key->sctp_src = output->tp.src; in __ovs_nla_put_key()
2213 sctp_key->sctp_dst = output->tp.dst; in __ovs_nla_put_key()
2214 } else if (swkey->eth.type == htons(ETH_P_IP) && in __ovs_nla_put_key()
2215 swkey->ip.proto == IPPROTO_ICMP) { in __ovs_nla_put_key()
2222 icmp_key->icmp_type = ntohs(output->tp.src); in __ovs_nla_put_key()
2223 icmp_key->icmp_code = ntohs(output->tp.dst); in __ovs_nla_put_key()
2224 } else if (swkey->eth.type == htons(ETH_P_IPV6) && in __ovs_nla_put_key()
2225 swkey->ip.proto == IPPROTO_ICMPV6) { in __ovs_nla_put_key()
2233 icmpv6_key->icmpv6_type = ntohs(output->tp.src); in __ovs_nla_put_key()
2234 icmpv6_key->icmpv6_code = ntohs(output->tp.dst); in __ovs_nla_put_key()
2236 if (swkey->tp.src == htons(NDISC_NEIGHBOUR_SOLICITATION) || in __ovs_nla_put_key()
2237 swkey->tp.src == htons(NDISC_NEIGHBOUR_ADVERTISEMENT)) { in __ovs_nla_put_key()
2244 memcpy(nd_key->nd_target, &output->ipv6.nd.target, in __ovs_nla_put_key()
2245 sizeof(nd_key->nd_target)); in __ovs_nla_put_key()
2246 ether_addr_copy(nd_key->nd_sll, output->ipv6.nd.sll); in __ovs_nla_put_key()
2247 ether_addr_copy(nd_key->nd_tll, output->ipv6.nd.tll); in __ovs_nla_put_key()
2261 return -EMSGSIZE; in __ovs_nla_put_key()
2273 return -EMSGSIZE; in ovs_nla_put_key()
2285 if (ovs_identifier_is_ufid(&flow->id)) in ovs_nla_put_identifier()
2286 return nla_put(skb, OVS_FLOW_ATTR_UFID, flow->id.ufid_len, in ovs_nla_put_identifier()
2287 flow->id.ufid); in ovs_nla_put_identifier()
2289 return ovs_nla_put_key(flow->id.unmasked_key, flow->id.unmasked_key, in ovs_nla_put_identifier()
2296 return ovs_nla_put_key(&flow->key, &flow->key, in ovs_nla_put_masked_key()
2303 return ovs_nla_put_key(&flow->key, &flow->mask->key, in ovs_nla_put_mask()
2317 return ERR_PTR(-ENOMEM); in nla_alloc_flow_actions()
2319 sfa->actions_len = 0; in nla_alloc_flow_actions()
2387 dst_release((struct dst_entry *)ovs_tun->tun_dst); in ovs_nla_free_set_action()
2439 ovs_nla_free_nested_actions(sf_acts->actions, sf_acts->actions_len); in ovs_nla_free_flow_actions()
2452 call_rcu(&sf_acts->rcu, __ovs_nla_free_flow_actions); in ovs_nla_free_flow_actions_rcu()
2463 (*sfa)->actions_len; in reserve_sfa_size()
2465 if (req_size <= (ksize(*sfa) - next_offset)) in reserve_sfa_size()
2474 return ERR_PTR(-EMSGSIZE); in reserve_sfa_size()
2483 memcpy(acts->actions, (*sfa)->actions, (*sfa)->actions_len); in reserve_sfa_size()
2484 acts->actions_len = (*sfa)->actions_len; in reserve_sfa_size()
2485 acts->orig_len = (*sfa)->orig_len; in reserve_sfa_size()
2490 (*sfa)->actions_len += req_size; in reserve_sfa_size()
2503 a->nla_type = attrtype; in __add_action()
2504 a->nla_len = nla_attr_size(len); in __add_action()
2508 memset((unsigned char *) a + a->nla_len, 0, nla_padlen(len)); in __add_action()
2526 int used = (*sfa)->actions_len; in add_nested_action_start()
2539 struct nlattr *a = (struct nlattr *) ((unsigned char *)sfa->actions + in add_nested_action_end()
2542 a->nla_len = sfa->actions_len - st_offset; in add_nested_action_end()
2569 return -EINVAL; in validate_and_copy_sample()
2573 return -EINVAL; in validate_and_copy_sample()
2577 return -EINVAL; in validate_and_copy_sample()
2581 return -EINVAL; in validate_and_copy_sample()
2593 * Set 'clone_action->exec' to true if the actions can be in validate_and_copy_sample()
2642 return -EINVAL; in validate_and_copy_dec_ttl()
2650 return -EINVAL; in validate_and_copy_dec_ttl()
2656 return -EINVAL; in validate_and_copy_dec_ttl()
2690 return -EINVAL; in validate_and_copy_clone()
2720 match->key = key; in ovs_match_init()
2721 match->mask = mask; in ovs_match_init()
2727 memset(&mask->key, 0, sizeof(mask->key)); in ovs_match_init()
2728 mask->range.start = mask->range.end = 0; in ovs_match_init()
2735 int opts_len = key->tun_opts_len; in validate_geneve_opts()
2738 option = (struct geneve_opt *)TUN_METADATA_OPTS(key, key->tun_opts_len); in validate_geneve_opts()
2743 return -EINVAL; in validate_geneve_opts()
2745 len = sizeof(*option) + option->length * 4; in validate_geneve_opts()
2747 return -EINVAL; in validate_geneve_opts()
2749 crit_opt |= !!(option->type & GENEVE_CRIT_OPT_TYPE); in validate_geneve_opts()
2752 opts_len -= len; in validate_geneve_opts()
2755 key->tun_key.tun_flags |= crit_opt ? TUNNEL_CRIT_OPT : 0; in validate_geneve_opts()
2803 return -ENOMEM; in validate_and_copy_set_tun()
2805 err = dst_cache_init(&tun_dst->u.tun_info.dst_cache, GFP_KERNEL); in validate_and_copy_set_tun()
2819 ovs_tun->tun_dst = tun_dst; in validate_and_copy_set_tun()
2821 tun_info = &tun_dst->u.tun_info; in validate_and_copy_set_tun()
2822 tun_info->mode = IP_TUNNEL_INFO_TX; in validate_and_copy_set_tun()
2824 tun_info->mode |= IP_TUNNEL_INFO_IPV6; in validate_and_copy_set_tun()
2826 tun_info->mode |= IP_TUNNEL_INFO_BRIDGE; in validate_and_copy_set_tun()
2827 tun_info->key = key.tun_key; in validate_and_copy_set_tun()
2854 /* Return false if there are any non-masked bits set.
2861 while (len--) in validate_masked()
2871 u8 mac_proto, __be16 eth_type, bool masked, bool log) in validate_set() argument
2879 return -EINVAL; in validate_set()
2882 if (masked) in validate_set()
2887 return -EINVAL; in validate_set()
2889 if (masked && !validate_masked(nla_data(ovs_key), key_len)) in validate_set()
2890 return -EINVAL; in validate_set()
2901 return -EINVAL; in validate_set()
2907 if (masked) in validate_set()
2908 return -EINVAL; /* Masked tunnel set not supported. */ in validate_set()
2920 return -EINVAL; in validate_set()
2924 if (masked) { in validate_set()
2927 /* Non-writeable fields. */ in validate_set()
2928 if (mask->ipv4_proto || mask->ipv4_frag) in validate_set()
2929 return -EINVAL; in validate_set()
2931 if (ipv4_key->ipv4_proto != flow_key->ip.proto) in validate_set()
2932 return -EINVAL; in validate_set()
2934 if (ipv4_key->ipv4_frag != flow_key->ip.frag) in validate_set()
2935 return -EINVAL; in validate_set()
2943 return -EINVAL; in validate_set()
2947 if (masked) { in validate_set()
2950 /* Non-writeable fields. */ in validate_set()
2951 if (mask->ipv6_proto || mask->ipv6_frag) in validate_set()
2952 return -EINVAL; in validate_set()
2955 if (ntohl(mask->ipv6_label) & 0xFFF00000) in validate_set()
2956 return -EINVAL; in validate_set()
2958 if (ipv6_key->ipv6_proto != flow_key->ip.proto) in validate_set()
2959 return -EINVAL; in validate_set()
2961 if (ipv6_key->ipv6_frag != flow_key->ip.frag) in validate_set()
2962 return -EINVAL; in validate_set()
2964 if (ntohl(ipv6_key->ipv6_label) & 0xFFF00000) in validate_set()
2965 return -EINVAL; in validate_set()
2972 flow_key->ip.proto != IPPROTO_TCP) in validate_set()
2973 return -EINVAL; in validate_set()
2980 flow_key->ip.proto != IPPROTO_UDP) in validate_set()
2981 return -EINVAL; in validate_set()
2987 return -EINVAL; in validate_set()
2993 flow_key->ip.proto != IPPROTO_SCTP) in validate_set()
2994 return -EINVAL; in validate_set()
3000 return -EINVAL; in validate_set()
3001 if (!validate_nsh(nla_data(a), masked, false, log)) in validate_set()
3002 return -EINVAL; in validate_set()
3006 return -EINVAL; in validate_set()
3009 /* Convert non-masked non-tunnel set actions to masked set actions. */ in validate_set()
3010 if (!masked && key_type != OVS_KEY_ATTR_TUNNEL) { in validate_set()
3028 /* Clear non-writeable bits from otherwise writeable fields. */ in validate_set()
3032 mask->ipv6_label &= htonl(0x000FFFFF); in validate_set()
3057 return -EINVAL; in validate_userspace()
3090 return -EINVAL; in validate_and_copy_check_pkt_len()
3097 return -EINVAL; in validate_and_copy_check_pkt_len()
3150 int totlen = NLA_ALIGN(from->nla_len); in copy_action()
3153 to = reserve_sfa_size(sfa, from->nla_len, log); in copy_action()
3173 return -EOVERFLOW; in __ovs_nla_copy_actions()
3176 /* Expected argument lengths, (u32)-1 for variable length. */ in __ovs_nla_copy_actions()
3180 [OVS_ACTION_ATTR_USERSPACE] = (u32)-1, in __ovs_nla_copy_actions()
3185 [OVS_ACTION_ATTR_SET] = (u32)-1, in __ovs_nla_copy_actions()
3186 [OVS_ACTION_ATTR_SET_MASKED] = (u32)-1, in __ovs_nla_copy_actions()
3187 [OVS_ACTION_ATTR_SAMPLE] = (u32)-1, in __ovs_nla_copy_actions()
3189 [OVS_ACTION_ATTR_CT] = (u32)-1, in __ovs_nla_copy_actions()
3194 [OVS_ACTION_ATTR_PUSH_NSH] = (u32)-1, in __ovs_nla_copy_actions()
3197 [OVS_ACTION_ATTR_CLONE] = (u32)-1, in __ovs_nla_copy_actions()
3198 [OVS_ACTION_ATTR_CHECK_PKT_LEN] = (u32)-1, in __ovs_nla_copy_actions()
3200 [OVS_ACTION_ATTR_DEC_TTL] = (u32)-1, in __ovs_nla_copy_actions()
3209 action_lens[type] != (u32)-1)) in __ovs_nla_copy_actions()
3210 return -EINVAL; in __ovs_nla_copy_actions()
3215 return -EINVAL; in __ovs_nla_copy_actions()
3225 return -EINVAL; in __ovs_nla_copy_actions()
3231 if (trunc->max_len < ETH_HLEN) in __ovs_nla_copy_actions()
3232 return -EINVAL; in __ovs_nla_copy_actions()
3239 switch (act_hash->hash_alg) { in __ovs_nla_copy_actions()
3245 return -EINVAL; in __ovs_nla_copy_actions()
3253 return -EINVAL; in __ovs_nla_copy_actions()
3259 return -EINVAL; in __ovs_nla_copy_actions()
3261 if (!eth_type_vlan(vlan->vlan_tpid)) in __ovs_nla_copy_actions()
3262 return -EINVAL; in __ovs_nla_copy_actions()
3263 if (!(vlan->vlan_tci & htons(VLAN_CFI_MASK))) in __ovs_nla_copy_actions()
3264 return -EINVAL; in __ovs_nla_copy_actions()
3265 vlan_tci = vlan->vlan_tci; in __ovs_nla_copy_actions()
3274 if (!eth_p_mpls(mpls->mpls_ethertype)) in __ovs_nla_copy_actions()
3275 return -EINVAL; in __ovs_nla_copy_actions()
3277 if (mpls->tun_flags & OVS_MPLS_L3_TUNNEL_FLAG_MASK) { in __ovs_nla_copy_actions()
3284 return -EINVAL; in __ovs_nla_copy_actions()
3294 eth_type = mpls->mpls_ethertype; in __ovs_nla_copy_actions()
3301 if (!eth_p_mpls(mpls->mpls_ethertype)) in __ovs_nla_copy_actions()
3302 return -EINVAL; in __ovs_nla_copy_actions()
3312 return -EINVAL; in __ovs_nla_copy_actions()
3313 eth_type = mpls->mpls_ethertype; in __ovs_nla_copy_actions()
3322 return -EINVAL; in __ovs_nla_copy_actions()
3338 return -EINVAL; in __ovs_nla_copy_actions()
3340 mpls_label_count--; in __ovs_nla_copy_actions()
3393 return -EINVAL; in __ovs_nla_copy_actions()
3399 return -EINVAL; in __ovs_nla_copy_actions()
3401 return -EINVAL; in __ovs_nla_copy_actions()
3411 return -EINVAL; in __ovs_nla_copy_actions()
3415 return -EINVAL; in __ovs_nla_copy_actions()
3422 return -EINVAL; in __ovs_nla_copy_actions()
3423 inner_proto = tun_p_to_eth_p(key->nsh.base.np); in __ovs_nla_copy_actions()
3425 return -EINVAL; in __ovs_nla_copy_actions()
3426 if (key->nsh.base.np == TUN_P_ETHERNET) in __ovs_nla_copy_actions()
3434 /* Non-existent meters are simply ignored. */ in __ovs_nla_copy_actions()
3477 return -EINVAL; in __ovs_nla_copy_actions()
3482 return -EINVAL; in __ovs_nla_copy_actions()
3492 return -EINVAL; in __ovs_nla_copy_actions()
3497 /* 'key' must be the masked key. */
3509 if (eth_p_mpls(key->eth.type)) in ovs_nla_copy_actions()
3510 mpls_label_count = hweight_long(key->mpls.num_labels_mask); in ovs_nla_copy_actions()
3512 (*sfa)->orig_len = nla_len(attr); in ovs_nla_copy_actions()
3513 err = __ovs_nla_copy_actions(net, attr, key, sfa, key->eth.type, in ovs_nla_copy_actions()
3514 key->eth.vlan.tci, mpls_label_count, log, in ovs_nla_copy_actions()
3532 return -EMSGSIZE; in sample_action_to_attr()
3538 if (nla_put_u32(skb, OVS_SAMPLE_ATTR_PROBABILITY, arg->probability)) { in sample_action_to_attr()
3539 err = -EMSGSIZE; in sample_action_to_attr()
3545 err = -EMSGSIZE; in sample_action_to_attr()
3571 return -EMSGSIZE; in clone_action_to_attr()
3595 return -EMSGSIZE; in check_pkt_len_action_to_attr()
3603 if (nla_put_u16(skb, OVS_CHECK_PKT_LEN_ATTR_PKT_LEN, arg->pkt_len)) { in check_pkt_len_action_to_attr()
3604 err = -EMSGSIZE; in check_pkt_len_action_to_attr()
3615 err = -EMSGSIZE; in check_pkt_len_action_to_attr()
3634 err = -EMSGSIZE; in check_pkt_len_action_to_attr()
3663 return -EMSGSIZE; in dec_ttl_action_to_attr()
3671 err = -EMSGSIZE; in dec_ttl_action_to_attr()
3706 struct ip_tunnel_info *tun_info = &ovs_tun->tun_dst->u.tun_info; in set_action_to_attr()
3710 return -EMSGSIZE; in set_action_to_attr()
3712 err = ip_tun_to_nlattr(skb, &tun_info->key, in set_action_to_attr()
3714 tun_info->options_len, in set_action_to_attr()
3715 ip_tunnel_info_af(tun_info), tun_info->mode); in set_action_to_attr()
3723 return -EMSGSIZE; in set_action_to_attr()
3737 /* Revert the conversion we did from a non-masked set action to in masked_set_action_to_set_action_attr()
3738 * masked set action. in masked_set_action_to_set_action_attr()
3742 return -EMSGSIZE; in masked_set_action_to_set_action_attr()
3745 return -EMSGSIZE; in masked_set_action_to_set_action_attr()
3804 return -EMSGSIZE; in ovs_nla_put_actions()