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
103 range = &match->range; in update_range()
105 range = &match->mask->range; in update_range()
107 if (range->start == range->end) { in update_range()
108 range->start = start; in update_range()
109 range->end = end; in update_range()
113 if (range->start > start) in update_range()
114 range->start = start; in update_range()
116 if (range->end < end) in update_range()
117 range->end = end; in update_range()
123 sizeof((match)->key->field), is_mask); \
125 (match)->mask->key.field = value; \
127 (match)->key->field = value; \
134 memcpy((u8 *)&(match)->mask->key + offset, value_p, \
137 memcpy((u8 *)(match)->key + offset, value_p, len); \
147 sizeof((match)->key->field), is_mask); \
149 memset((u8 *)&(match)->mask->key.field, value, \
150 sizeof((match)->mask->key.field)); \
152 memset((u8 *)&(match)->key->field, value, \
153 sizeof((match)->key->field)); \
159 bitmap_copy(is_mask ? (match)->mask->key.field : (match)->key->field, \
192 if (match->key->eth.type == htons(ETH_P_ARP) in match_validate()
193 || match->key->eth.type == htons(ETH_P_RARP)) { in match_validate()
195 if (match->mask && (match->mask->key.eth.type == htons(0xffff))) in match_validate()
199 if (eth_p_mpls(match->key->eth.type)) { in match_validate()
201 if (match->mask && (match->mask->key.eth.type == htons(0xffff))) in match_validate()
205 if (match->key->eth.type == htons(ETH_P_IP)) { in match_validate()
207 if (match->mask && match->mask->key.eth.type == htons(0xffff)) { in match_validate()
212 if (match->key->ip.frag != OVS_FRAG_TYPE_LATER) { in match_validate()
213 if (match->key->ip.proto == IPPROTO_UDP) { in match_validate()
215 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
219 if (match->key->ip.proto == IPPROTO_SCTP) { in match_validate()
221 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
225 if (match->key->ip.proto == IPPROTO_TCP) { in match_validate()
228 if (match->mask && (match->mask->key.ip.proto == 0xff)) { in match_validate()
234 if (match->key->ip.proto == IPPROTO_ICMP) { in match_validate()
236 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
242 if (match->key->eth.type == htons(ETH_P_IPV6)) { in match_validate()
244 if (match->mask && match->mask->key.eth.type == htons(0xffff)) { in match_validate()
249 if (match->key->ip.frag != OVS_FRAG_TYPE_LATER) { in match_validate()
250 if (match->key->ip.proto == IPPROTO_UDP) { in match_validate()
252 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
256 if (match->key->ip.proto == IPPROTO_SCTP) { in match_validate()
258 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
262 if (match->key->ip.proto == IPPROTO_TCP) { in match_validate()
265 if (match->mask && (match->mask->key.ip.proto == 0xff)) { in match_validate()
271 if (match->key->ip.proto == IPPROTO_ICMPV6) { in match_validate()
273 if (match->mask && (match->mask->key.ip.proto == 0xff)) in match_validate()
276 if (match->key->tp.src == in match_validate()
278 match->key->tp.src == htons(NDISC_NEIGHBOUR_ADVERTISEMENT)) { in match_validate()
286 if (match->mask && (match->mask->key.tp.src == htons(0xff))) in match_validate()
293 if (match->key->eth.type == htons(ETH_P_NSH)) { in match_validate()
295 if (match->mask && in match_validate()
296 match->mask->key.eth.type == htons(0xffff)) { in match_validate()
493 return -EINVAL; in __parse_flow_nlattrs()
500 return -EINVAL; in __parse_flow_nlattrs()
505 return -EINVAL; in __parse_flow_nlattrs()
512 return -EINVAL; in __parse_flow_nlattrs()
522 return -EINVAL; in __parse_flow_nlattrs()
548 if (nla_len(a) > sizeof(match->key->tun_opts)) { in genev_tun_opt_from_nlattr()
550 nla_len(a), sizeof(match->key->tun_opts)); in genev_tun_opt_from_nlattr()
551 return -EINVAL; in genev_tun_opt_from_nlattr()
557 return -EINVAL; in genev_tun_opt_from_nlattr()
578 if (match->key->tun_opts_len != nla_len(a)) { in genev_tun_opt_from_nlattr()
580 match->key->tun_opts_len, nla_len(a)); in genev_tun_opt_from_nlattr()
581 return -EINVAL; in genev_tun_opt_from_nlattr()
602 BUILD_BUG_ON(sizeof(opts) > sizeof(match->key->tun_opts)); in vxlan_tun_opt_from_nlattr()
611 return -EINVAL; in vxlan_tun_opt_from_nlattr()
619 return -EINVAL; in vxlan_tun_opt_from_nlattr()
629 return -EINVAL; in vxlan_tun_opt_from_nlattr()
635 return -EINVAL; in vxlan_tun_opt_from_nlattr()
656 sizeof(match->key->tun_opts)); in erspan_tun_opt_from_nlattr()
658 if (nla_len(a) > sizeof(match->key->tun_opts)) { in erspan_tun_opt_from_nlattr()
660 nla_len(a), sizeof(match->key->tun_opts)); in erspan_tun_opt_from_nlattr()
661 return -EINVAL; in erspan_tun_opt_from_nlattr()
694 return -EINVAL; in ip_tun_from_nlattr()
701 return -EINVAL; in ip_tun_from_nlattr()
759 return -EINVAL; in ip_tun_from_nlattr()
772 return -EINVAL; in ip_tun_from_nlattr()
787 return -EINVAL; in ip_tun_from_nlattr()
805 return -EINVAL; in ip_tun_from_nlattr()
820 return -EINVAL; in ip_tun_from_nlattr()
825 return -EINVAL; in ip_tun_from_nlattr()
831 return -EINVAL; in ip_tun_from_nlattr()
837 if (match->key->tun_key.u.ipv4.src || in ip_tun_from_nlattr()
838 match->key->tun_key.u.ipv4.dst || in ip_tun_from_nlattr()
839 match->key->tun_key.tp_src || in ip_tun_from_nlattr()
840 match->key->tun_key.tp_dst || in ip_tun_from_nlattr()
841 match->key->tun_key.ttl || in ip_tun_from_nlattr()
842 match->key->tun_key.tos || in ip_tun_from_nlattr()
845 return -EINVAL; in ip_tun_from_nlattr()
847 } else if (!match->key->tun_key.u.ipv4.dst) { in ip_tun_from_nlattr()
849 return -EINVAL; in ip_tun_from_nlattr()
852 if (ipv6 && ipv6_addr_any(&match->key->tun_key.u.ipv6.dst)) { in ip_tun_from_nlattr()
854 return -EINVAL; in ip_tun_from_nlattr()
859 return -EINVAL; in ip_tun_from_nlattr()
874 return -EMSGSIZE; in vxlan_opt_to_nlattr()
876 if (nla_put_u32(skb, OVS_VXLAN_EXT_GBP, opts->gbp) < 0) in vxlan_opt_to_nlattr()
877 return -EMSGSIZE; in vxlan_opt_to_nlattr()
888 if (test_bit(IP_TUNNEL_KEY_BIT, output->tun_flags) && in __ip_tun_to_nlattr()
889 nla_put_be64(skb, OVS_TUNNEL_KEY_ATTR_ID, output->tun_id, in __ip_tun_to_nlattr()
891 return -EMSGSIZE; in __ip_tun_to_nlattr()
895 ? -EMSGSIZE : 0; in __ip_tun_to_nlattr()
899 if (output->u.ipv4.src && in __ip_tun_to_nlattr()
901 output->u.ipv4.src)) in __ip_tun_to_nlattr()
902 return -EMSGSIZE; in __ip_tun_to_nlattr()
903 if (output->u.ipv4.dst && in __ip_tun_to_nlattr()
905 output->u.ipv4.dst)) in __ip_tun_to_nlattr()
906 return -EMSGSIZE; in __ip_tun_to_nlattr()
909 if (!ipv6_addr_any(&output->u.ipv6.src) && in __ip_tun_to_nlattr()
911 &output->u.ipv6.src)) in __ip_tun_to_nlattr()
912 return -EMSGSIZE; in __ip_tun_to_nlattr()
913 if (!ipv6_addr_any(&output->u.ipv6.dst) && in __ip_tun_to_nlattr()
915 &output->u.ipv6.dst)) in __ip_tun_to_nlattr()
916 return -EMSGSIZE; in __ip_tun_to_nlattr()
919 if (output->tos && in __ip_tun_to_nlattr()
920 nla_put_u8(skb, OVS_TUNNEL_KEY_ATTR_TOS, output->tos)) in __ip_tun_to_nlattr()
921 return -EMSGSIZE; in __ip_tun_to_nlattr()
922 if (nla_put_u8(skb, OVS_TUNNEL_KEY_ATTR_TTL, output->ttl)) in __ip_tun_to_nlattr()
923 return -EMSGSIZE; in __ip_tun_to_nlattr()
924 if (test_bit(IP_TUNNEL_DONT_FRAGMENT_BIT, output->tun_flags) && in __ip_tun_to_nlattr()
926 return -EMSGSIZE; in __ip_tun_to_nlattr()
927 if (test_bit(IP_TUNNEL_CSUM_BIT, output->tun_flags) && in __ip_tun_to_nlattr()
929 return -EMSGSIZE; in __ip_tun_to_nlattr()
930 if (output->tp_src && in __ip_tun_to_nlattr()
931 nla_put_be16(skb, OVS_TUNNEL_KEY_ATTR_TP_SRC, output->tp_src)) in __ip_tun_to_nlattr()
932 return -EMSGSIZE; in __ip_tun_to_nlattr()
933 if (output->tp_dst && in __ip_tun_to_nlattr()
934 nla_put_be16(skb, OVS_TUNNEL_KEY_ATTR_TP_DST, output->tp_dst)) in __ip_tun_to_nlattr()
935 return -EMSGSIZE; in __ip_tun_to_nlattr()
936 if (test_bit(IP_TUNNEL_OAM_BIT, output->tun_flags) && in __ip_tun_to_nlattr()
938 return -EMSGSIZE; in __ip_tun_to_nlattr()
940 if (test_bit(IP_TUNNEL_GENEVE_OPT_BIT, output->tun_flags) && in __ip_tun_to_nlattr()
943 return -EMSGSIZE; in __ip_tun_to_nlattr()
945 output->tun_flags) && in __ip_tun_to_nlattr()
947 return -EMSGSIZE; in __ip_tun_to_nlattr()
949 output->tun_flags) && in __ip_tun_to_nlattr()
952 return -EMSGSIZE; in __ip_tun_to_nlattr()
968 return -EMSGSIZE; in ip_tun_to_nlattr()
982 return __ip_tun_to_nlattr(skb, &tun_info->key, in ovs_nla_put_tunnel_info()
984 tun_info->options_len, in ovs_nla_put_tunnel_info()
985 ip_tunnel_info_af(tun_info), tun_info->mode); in ovs_nla_put_tunnel_info()
1026 OVS_NLERR(log, "Invalid %s frame", (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_from_nlattrs()
1027 return -EINVAL; in validate_vlan_from_nlattrs()
1036 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_from_nlattrs()
1037 return -EINVAL; in validate_vlan_from_nlattrs()
1040 OVS_NLERR(log, "Truncated %s header has non-zero encap attribute.", in validate_vlan_from_nlattrs()
1041 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_from_nlattrs()
1042 return -EINVAL; in validate_vlan_from_nlattrs()
1055 bool encap_valid = !!(match->key->eth.vlan.tci & in validate_vlan_mask_from_nlattrs()
1057 bool i_encap_valid = !!(match->key->eth.cvlan.tci & in validate_vlan_mask_from_nlattrs()
1066 OVS_NLERR(log, "Encap mask attribute is set for non-%s frame.", in validate_vlan_mask_from_nlattrs()
1067 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_mask_from_nlattrs()
1068 return -EINVAL; in validate_vlan_mask_from_nlattrs()
1079 (inner) ? "C-VLAN" : "VLAN", ntohs(tpid)); in validate_vlan_mask_from_nlattrs()
1080 return -EINVAL; in validate_vlan_mask_from_nlattrs()
1084 (inner) ? "C-VLAN" : "VLAN"); in validate_vlan_mask_from_nlattrs()
1085 return -EINVAL; in validate_vlan_mask_from_nlattrs()
1138 encap_valid = !!(match->key->eth.vlan.tci & htons(VLAN_CFI_MASK)); in parse_vlan_from_nlattrs()
1162 return -EINVAL; in parse_eth_type_from_nlattrs()
1204 return -EINVAL; in metadata_from_nlattrs()
1222 return -EINVAL; in metadata_from_nlattrs()
1233 return -EINVAL; in metadata_from_nlattrs()
1258 SW_FLOW_KEY_MEMCPY(match, ct.labels, cl->ct_labels, in metadata_from_nlattrs()
1267 SW_FLOW_KEY_PUT(match, ipv4.ct_orig.src, ct->ipv4_src, is_mask); in metadata_from_nlattrs()
1268 SW_FLOW_KEY_PUT(match, ipv4.ct_orig.dst, ct->ipv4_dst, is_mask); in metadata_from_nlattrs()
1269 SW_FLOW_KEY_PUT(match, ct.orig_tp.src, ct->src_port, is_mask); in metadata_from_nlattrs()
1270 SW_FLOW_KEY_PUT(match, ct.orig_tp.dst, ct->dst_port, is_mask); in metadata_from_nlattrs()
1271 SW_FLOW_KEY_PUT(match, ct_orig_proto, ct->ipv4_proto, is_mask); in metadata_from_nlattrs()
1279 SW_FLOW_KEY_MEMCPY(match, ipv6.ct_orig.src, &ct->ipv6_src, in metadata_from_nlattrs()
1280 sizeof(match->key->ipv6.ct_orig.src), in metadata_from_nlattrs()
1282 SW_FLOW_KEY_MEMCPY(match, ipv6.ct_orig.dst, &ct->ipv6_dst, in metadata_from_nlattrs()
1283 sizeof(match->key->ipv6.ct_orig.dst), in metadata_from_nlattrs()
1285 SW_FLOW_KEY_PUT(match, ct.orig_tp.src, ct->src_port, is_mask); in metadata_from_nlattrs()
1286 SW_FLOW_KEY_PUT(match, ct.orig_tp.dst, ct->dst_port, is_mask); in metadata_from_nlattrs()
1287 SW_FLOW_KEY_PUT(match, ct_orig_proto, ct->ipv6_proto, is_mask); in metadata_from_nlattrs()
1320 return -ENOBUFS; in nsh_hdr_from_nlattr()
1329 flags = base->flags; in nsh_hdr_from_nlattr()
1330 ttl = base->ttl; in nsh_hdr_from_nlattr()
1331 nh->np = base->np; in nsh_hdr_from_nlattr()
1332 nh->mdtype = base->mdtype; in nsh_hdr_from_nlattr()
1333 nh->path_hdr = base->path_hdr; in nsh_hdr_from_nlattr()
1338 if (mdlen > size - NSH_BASE_HDR_LEN) in nsh_hdr_from_nlattr()
1339 return -ENOBUFS; in nsh_hdr_from_nlattr()
1340 memcpy(&nh->md1, nla_data(a), mdlen); in nsh_hdr_from_nlattr()
1345 if (mdlen > size - NSH_BASE_HDR_LEN) in nsh_hdr_from_nlattr()
1346 return -ENOBUFS; in nsh_hdr_from_nlattr()
1347 memcpy(&nh->md2, nla_data(a), mdlen); in nsh_hdr_from_nlattr()
1351 return -EINVAL; in nsh_hdr_from_nlattr()
1356 nh->ver_flags_ttl_len = 0; in nsh_hdr_from_nlattr()
1378 nsh->base = *base; in nsh_key_from_nlattr()
1379 nsh_mask->base = *base_mask; in nsh_key_from_nlattr()
1386 memcpy(nsh->context, md1->context, sizeof(*md1)); in nsh_key_from_nlattr()
1387 memcpy(nsh_mask->context, md1_mask->context, in nsh_key_from_nlattr()
1393 return -ENOTSUPP; in nsh_key_from_nlattr()
1395 return -EINVAL; in nsh_key_from_nlattr()
1415 return -EINVAL; in nsh_key_put_from_nlattr()
1424 return -EINVAL; in nsh_key_put_from_nlattr()
1436 return -EINVAL; in nsh_key_put_from_nlattr()
1444 mdtype = base->mdtype; in nsh_key_put_from_nlattr()
1446 base->flags, is_mask); in nsh_key_put_from_nlattr()
1448 base->ttl, is_mask); in nsh_key_put_from_nlattr()
1450 base->mdtype, is_mask); in nsh_key_put_from_nlattr()
1452 base->np, is_mask); in nsh_key_put_from_nlattr()
1454 base->path_hdr, is_mask); in nsh_key_put_from_nlattr()
1463 md1->context[i], is_mask); in nsh_key_put_from_nlattr()
1468 return -ENOTSUPP; in nsh_key_put_from_nlattr()
1479 return -EINVAL; in nsh_key_put_from_nlattr()
1485 return -EINVAL; in nsh_key_put_from_nlattr()
1491 return -EINVAL; in nsh_key_put_from_nlattr()
1499 return -EINVAL; in nsh_key_put_from_nlattr()
1507 return -EINVAL; in nsh_key_put_from_nlattr()
1516 return -EINVAL; in nsh_key_put_from_nlattr()
1538 eth_key->eth_src, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1540 eth_key->eth_dst, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1548 return -EINVAL; in ovs_key_from_nlattrs()
1559 } else if (!match->key->eth.type) { in ovs_key_from_nlattrs()
1561 return -EINVAL; in ovs_key_from_nlattrs()
1568 if (!is_mask && ipv4_key->ipv4_frag > OVS_FRAG_TYPE_MAX) { in ovs_key_from_nlattrs()
1570 ipv4_key->ipv4_frag, OVS_FRAG_TYPE_MAX); in ovs_key_from_nlattrs()
1571 return -EINVAL; in ovs_key_from_nlattrs()
1574 ipv4_key->ipv4_proto, is_mask); in ovs_key_from_nlattrs()
1576 ipv4_key->ipv4_tos, is_mask); in ovs_key_from_nlattrs()
1578 ipv4_key->ipv4_ttl, is_mask); in ovs_key_from_nlattrs()
1580 ipv4_key->ipv4_frag, is_mask); in ovs_key_from_nlattrs()
1582 ipv4_key->ipv4_src, is_mask); in ovs_key_from_nlattrs()
1584 ipv4_key->ipv4_dst, is_mask); in ovs_key_from_nlattrs()
1592 if (!is_mask && ipv6_key->ipv6_frag > OVS_FRAG_TYPE_MAX) { in ovs_key_from_nlattrs()
1594 ipv6_key->ipv6_frag, OVS_FRAG_TYPE_MAX); in ovs_key_from_nlattrs()
1595 return -EINVAL; in ovs_key_from_nlattrs()
1598 if (!is_mask && ipv6_key->ipv6_label & htonl(0xFFF00000)) { in ovs_key_from_nlattrs()
1600 ntohl(ipv6_key->ipv6_label), (1 << 20) - 1); in ovs_key_from_nlattrs()
1601 return -EINVAL; in ovs_key_from_nlattrs()
1605 ipv6_key->ipv6_label, is_mask); in ovs_key_from_nlattrs()
1607 ipv6_key->ipv6_proto, is_mask); in ovs_key_from_nlattrs()
1609 ipv6_key->ipv6_tclass, is_mask); in ovs_key_from_nlattrs()
1611 ipv6_key->ipv6_hlimit, is_mask); in ovs_key_from_nlattrs()
1613 ipv6_key->ipv6_frag, is_mask); in ovs_key_from_nlattrs()
1615 ipv6_key->ipv6_src, in ovs_key_from_nlattrs()
1616 sizeof(match->key->ipv6.addr.src), in ovs_key_from_nlattrs()
1619 ipv6_key->ipv6_dst, in ovs_key_from_nlattrs()
1620 sizeof(match->key->ipv6.addr.dst), in ovs_key_from_nlattrs()
1632 ipv6_exthdrs_key->hdrs, is_mask); in ovs_key_from_nlattrs()
1641 if (!is_mask && (arp_key->arp_op & htons(0xff00))) { in ovs_key_from_nlattrs()
1643 arp_key->arp_op); in ovs_key_from_nlattrs()
1644 return -EINVAL; in ovs_key_from_nlattrs()
1648 arp_key->arp_sip, is_mask); in ovs_key_from_nlattrs()
1650 arp_key->arp_tip, is_mask); in ovs_key_from_nlattrs()
1652 ntohs(arp_key->arp_op), is_mask); in ovs_key_from_nlattrs()
1654 arp_key->arp_sha, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1656 arp_key->arp_tha, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1664 return -EINVAL; in ovs_key_from_nlattrs()
1679 return -EINVAL; in ovs_key_from_nlattrs()
1681 label_count_mask = GENMASK(label_count - 1, 0); in ovs_key_from_nlattrs()
1697 SW_FLOW_KEY_PUT(match, tp.src, tcp_key->tcp_src, is_mask); in ovs_key_from_nlattrs()
1698 SW_FLOW_KEY_PUT(match, tp.dst, tcp_key->tcp_dst, is_mask); in ovs_key_from_nlattrs()
1713 SW_FLOW_KEY_PUT(match, tp.src, udp_key->udp_src, is_mask); in ovs_key_from_nlattrs()
1714 SW_FLOW_KEY_PUT(match, tp.dst, udp_key->udp_dst, is_mask); in ovs_key_from_nlattrs()
1722 SW_FLOW_KEY_PUT(match, tp.src, sctp_key->sctp_src, is_mask); in ovs_key_from_nlattrs()
1723 SW_FLOW_KEY_PUT(match, tp.dst, sctp_key->sctp_dst, is_mask); in ovs_key_from_nlattrs()
1732 htons(icmp_key->icmp_type), is_mask); in ovs_key_from_nlattrs()
1734 htons(icmp_key->icmp_code), is_mask); in ovs_key_from_nlattrs()
1743 htons(icmpv6_key->icmpv6_type), is_mask); in ovs_key_from_nlattrs()
1745 htons(icmpv6_key->icmpv6_code), is_mask); in ovs_key_from_nlattrs()
1754 nd_key->nd_target, in ovs_key_from_nlattrs()
1755 sizeof(match->key->ipv6.nd.target), in ovs_key_from_nlattrs()
1758 nd_key->nd_sll, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1760 nd_key->nd_tll, ETH_ALEN, is_mask); in ovs_key_from_nlattrs()
1767 return -EINVAL; in ovs_key_from_nlattrs()
1797 * ovs_nla_get_match - parses Netlink attributes into a flow key and
1801 * @net: Used to determine per-namespace field support.
1835 if (match->mask) { in ovs_nla_get_match()
1838 * all the 'match->mask' fields that have been touched in ovs_nla_get_match()
1839 * in 'match->key'. We cannot simply memset in ovs_nla_get_match()
1840 * 'match->mask', because padding bytes and fields not in ovs_nla_get_match()
1841 * specified in 'match->key' should be left to 0. in ovs_nla_get_match()
1845 * 'match->mask' appropriately. in ovs_nla_get_match()
1851 return -ENOMEM; in ovs_nla_get_match()
1858 if (match->key->tun_proto) in ovs_nla_get_match()
1884 err = -EINVAL; in ovs_nla_get_match()
1908 /* Initializes 'flow->ufid', returning true if 'attr' contains a valid UFID,
1914 sfid->ufid_len = get_ufid_len(attr, log); in ovs_nla_get_ufid()
1915 if (sfid->ufid_len) in ovs_nla_get_ufid()
1916 memcpy(sfid->ufid, nla_data(attr), sfid->ufid_len); in ovs_nla_get_ufid()
1918 return sfid->ufid_len; in ovs_nla_get_ufid()
1932 return -ENOMEM; in ovs_nla_get_identifier()
1934 sfid->unmasked_key = new_key; in ovs_nla_get_identifier()
1945 * ovs_nla_get_flow_metadata - parses Netlink attributes into a flow key.
1973 key->ct_state = 0; in ovs_nla_get_flow_metadata()
1974 key->ct_zone = 0; in ovs_nla_get_flow_metadata()
1975 key->ct_orig_proto = 0; in ovs_nla_get_flow_metadata()
1976 memset(&key->ct, 0, sizeof(key->ct)); in ovs_nla_get_flow_metadata()
1977 memset(&key->ipv4.ct_orig, 0, sizeof(key->ipv4.ct_orig)); in ovs_nla_get_flow_metadata()
1978 memset(&key->ipv6.ct_orig, 0, sizeof(key->ipv6.ct_orig)); in ovs_nla_get_flow_metadata()
1980 key->phy.in_port = DP_MAX_PORTS; in ovs_nla_get_flow_metadata()
1988 __be16 eth_type = !is_mask ? vh->tpid : htons(0xffff); in ovs_nla_put_vlan()
1991 nla_put_be16(skb, OVS_KEY_ATTR_VLAN, vh->tci)) in ovs_nla_put_vlan()
1992 return -EMSGSIZE; in ovs_nla_put_vlan()
2003 return -EMSGSIZE; in nsh_key_to_nlattr()
2005 if (nla_put(skb, OVS_NSH_KEY_ATTR_BASE, sizeof(nsh->base), &nsh->base)) in nsh_key_to_nlattr()
2008 if (is_mask || nsh->base.mdtype == NSH_M_TYPE1) { in nsh_key_to_nlattr()
2010 sizeof(nsh->context), nsh->context)) in nsh_key_to_nlattr()
2021 return -EMSGSIZE; in nsh_key_to_nlattr()
2033 if (nla_put_u32(skb, OVS_KEY_ATTR_RECIRC_ID, output->recirc_id)) in __ovs_nla_put_key()
2036 if (nla_put_u32(skb, OVS_KEY_ATTR_DP_HASH, output->ovs_flow_hash)) in __ovs_nla_put_key()
2039 if (nla_put_u32(skb, OVS_KEY_ATTR_PRIORITY, output->phy.priority)) in __ovs_nla_put_key()
2042 if ((swkey->tun_proto || is_mask)) { in __ovs_nla_put_key()
2045 if (ip_tunnel_is_options_present(output->tun_key.tun_flags)) in __ovs_nla_put_key()
2046 opts = TUN_METADATA_OPTS(output, swkey->tun_opts_len); in __ovs_nla_put_key()
2048 if (ip_tun_to_nlattr(skb, &output->tun_key, opts, in __ovs_nla_put_key()
2049 swkey->tun_opts_len, swkey->tun_proto, 0)) in __ovs_nla_put_key()
2053 if (swkey->phy.in_port == DP_MAX_PORTS) { in __ovs_nla_put_key()
2054 if (is_mask && (output->phy.in_port == 0xffff)) in __ovs_nla_put_key()
2062 (upper_u16 << 16) | output->phy.in_port)) in __ovs_nla_put_key()
2066 if (nla_put_u32(skb, OVS_KEY_ATTR_SKB_MARK, output->phy.skb_mark)) in __ovs_nla_put_key()
2078 ether_addr_copy(eth_key->eth_src, output->eth.src); in __ovs_nla_put_key()
2079 ether_addr_copy(eth_key->eth_dst, output->eth.dst); in __ovs_nla_put_key()
2081 if (swkey->eth.vlan.tci || eth_type_vlan(swkey->eth.type)) { in __ovs_nla_put_key()
2082 if (ovs_nla_put_vlan(skb, &output->eth.vlan, is_mask)) in __ovs_nla_put_key()
2085 if (!swkey->eth.vlan.tci) in __ovs_nla_put_key()
2088 if (swkey->eth.cvlan.tci || eth_type_vlan(swkey->eth.type)) { in __ovs_nla_put_key()
2089 if (ovs_nla_put_vlan(skb, &output->eth.cvlan, is_mask)) in __ovs_nla_put_key()
2093 if (!swkey->eth.cvlan.tci) in __ovs_nla_put_key()
2098 if (swkey->eth.type == htons(ETH_P_802_2)) { in __ovs_nla_put_key()
2105 if (is_mask && output->eth.type) in __ovs_nla_put_key()
2107 output->eth.type)) in __ovs_nla_put_key()
2113 if (nla_put_be16(skb, OVS_KEY_ATTR_ETHERTYPE, output->eth.type)) in __ovs_nla_put_key()
2116 if (eth_type_vlan(swkey->eth.type)) { in __ovs_nla_put_key()
2124 if (swkey->eth.type == htons(ETH_P_IP)) { in __ovs_nla_put_key()
2131 ipv4_key->ipv4_src = output->ipv4.addr.src; in __ovs_nla_put_key()
2132 ipv4_key->ipv4_dst = output->ipv4.addr.dst; in __ovs_nla_put_key()
2133 ipv4_key->ipv4_proto = output->ip.proto; in __ovs_nla_put_key()
2134 ipv4_key->ipv4_tos = output->ip.tos; in __ovs_nla_put_key()
2135 ipv4_key->ipv4_ttl = output->ip.ttl; in __ovs_nla_put_key()
2136 ipv4_key->ipv4_frag = output->ip.frag; in __ovs_nla_put_key()
2137 } else if (swkey->eth.type == htons(ETH_P_IPV6)) { in __ovs_nla_put_key()
2145 memcpy(ipv6_key->ipv6_src, &output->ipv6.addr.src, in __ovs_nla_put_key()
2146 sizeof(ipv6_key->ipv6_src)); in __ovs_nla_put_key()
2147 memcpy(ipv6_key->ipv6_dst, &output->ipv6.addr.dst, in __ovs_nla_put_key()
2148 sizeof(ipv6_key->ipv6_dst)); in __ovs_nla_put_key()
2149 ipv6_key->ipv6_label = output->ipv6.label; in __ovs_nla_put_key()
2150 ipv6_key->ipv6_proto = output->ip.proto; in __ovs_nla_put_key()
2151 ipv6_key->ipv6_tclass = output->ip.tos; in __ovs_nla_put_key()
2152 ipv6_key->ipv6_hlimit = output->ip.ttl; in __ovs_nla_put_key()
2153 ipv6_key->ipv6_frag = output->ip.frag; in __ovs_nla_put_key()
2160 ipv6_exthdrs_key->hdrs = output->ipv6.exthdrs; in __ovs_nla_put_key()
2161 } else if (swkey->eth.type == htons(ETH_P_NSH)) { in __ovs_nla_put_key()
2162 if (nsh_key_to_nlattr(&output->nsh, is_mask, skb)) in __ovs_nla_put_key()
2164 } else if (swkey->eth.type == htons(ETH_P_ARP) || in __ovs_nla_put_key()
2165 swkey->eth.type == htons(ETH_P_RARP)) { in __ovs_nla_put_key()
2173 arp_key->arp_sip = output->ipv4.addr.src; in __ovs_nla_put_key()
2174 arp_key->arp_tip = output->ipv4.addr.dst; in __ovs_nla_put_key()
2175 arp_key->arp_op = htons(output->ip.proto); in __ovs_nla_put_key()
2176 ether_addr_copy(arp_key->arp_sha, output->ipv4.arp.sha); in __ovs_nla_put_key()
2177 ether_addr_copy(arp_key->arp_tha, output->ipv4.arp.tha); in __ovs_nla_put_key()
2178 } else if (eth_p_mpls(swkey->eth.type)) { in __ovs_nla_put_key()
2182 num_labels = hweight_long(output->mpls.num_labels_mask); in __ovs_nla_put_key()
2190 mpls_key[i].mpls_lse = output->mpls.lse[i]; in __ovs_nla_put_key()
2193 if ((swkey->eth.type == htons(ETH_P_IP) || in __ovs_nla_put_key()
2194 swkey->eth.type == htons(ETH_P_IPV6)) && in __ovs_nla_put_key()
2195 swkey->ip.frag != OVS_FRAG_TYPE_LATER) { in __ovs_nla_put_key()
2197 if (swkey->ip.proto == IPPROTO_TCP) { in __ovs_nla_put_key()
2204 tcp_key->tcp_src = output->tp.src; in __ovs_nla_put_key()
2205 tcp_key->tcp_dst = output->tp.dst; in __ovs_nla_put_key()
2207 output->tp.flags)) in __ovs_nla_put_key()
2209 } else if (swkey->ip.proto == IPPROTO_UDP) { in __ovs_nla_put_key()
2216 udp_key->udp_src = output->tp.src; in __ovs_nla_put_key()
2217 udp_key->udp_dst = output->tp.dst; in __ovs_nla_put_key()
2218 } else if (swkey->ip.proto == IPPROTO_SCTP) { in __ovs_nla_put_key()
2225 sctp_key->sctp_src = output->tp.src; in __ovs_nla_put_key()
2226 sctp_key->sctp_dst = output->tp.dst; in __ovs_nla_put_key()
2227 } else if (swkey->eth.type == htons(ETH_P_IP) && in __ovs_nla_put_key()
2228 swkey->ip.proto == IPPROTO_ICMP) { in __ovs_nla_put_key()
2235 icmp_key->icmp_type = ntohs(output->tp.src); in __ovs_nla_put_key()
2236 icmp_key->icmp_code = ntohs(output->tp.dst); in __ovs_nla_put_key()
2237 } else if (swkey->eth.type == htons(ETH_P_IPV6) && in __ovs_nla_put_key()
2238 swkey->ip.proto == IPPROTO_ICMPV6) { in __ovs_nla_put_key()
2246 icmpv6_key->icmpv6_type = ntohs(output->tp.src); in __ovs_nla_put_key()
2247 icmpv6_key->icmpv6_code = ntohs(output->tp.dst); in __ovs_nla_put_key()
2249 if (swkey->tp.src == htons(NDISC_NEIGHBOUR_SOLICITATION) || in __ovs_nla_put_key()
2250 swkey->tp.src == htons(NDISC_NEIGHBOUR_ADVERTISEMENT)) { in __ovs_nla_put_key()
2257 memcpy(nd_key->nd_target, &output->ipv6.nd.target, in __ovs_nla_put_key()
2258 sizeof(nd_key->nd_target)); in __ovs_nla_put_key()
2259 ether_addr_copy(nd_key->nd_sll, output->ipv6.nd.sll); in __ovs_nla_put_key()
2260 ether_addr_copy(nd_key->nd_tll, output->ipv6.nd.tll); in __ovs_nla_put_key()
2274 return -EMSGSIZE; in __ovs_nla_put_key()
2286 return -EMSGSIZE; in ovs_nla_put_key()
2298 if (ovs_identifier_is_ufid(&flow->id)) in ovs_nla_put_identifier()
2299 return nla_put(skb, OVS_FLOW_ATTR_UFID, flow->id.ufid_len, in ovs_nla_put_identifier()
2300 flow->id.ufid); in ovs_nla_put_identifier()
2302 return ovs_nla_put_key(flow->id.unmasked_key, flow->id.unmasked_key, in ovs_nla_put_identifier()
2309 return ovs_nla_put_key(&flow->key, &flow->key, in ovs_nla_put_masked_key()
2316 return ovs_nla_put_key(&flow->key, &flow->mask->key, in ovs_nla_put_mask()
2326 return ERR_PTR(-ENOMEM); in nla_alloc_flow_actions()
2328 sfa->actions_len = 0; in nla_alloc_flow_actions()
2396 dst_release((struct dst_entry *)ovs_tun->tun_dst); in ovs_nla_free_set_action()
2448 ovs_nla_free_nested_actions(sf_acts->actions, sf_acts->actions_len); in ovs_nla_free_flow_actions()
2461 call_rcu(&sf_acts->rcu, __ovs_nla_free_flow_actions); in ovs_nla_free_flow_actions_rcu()
2472 (*sfa)->actions_len; in reserve_sfa_size()
2474 if (req_size <= (ksize(*sfa) - next_offset)) 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()
2756 __set_bit(IP_TUNNEL_CRIT_OPT_BIT, key->tun_key.tun_flags); in validate_geneve_opts()
2804 return -ENOMEM; in validate_and_copy_set_tun()
2806 err = dst_cache_init(&tun_dst->u.tun_info.dst_cache, GFP_KERNEL); in validate_and_copy_set_tun()
2820 ovs_tun->tun_dst = tun_dst; in validate_and_copy_set_tun()
2822 tun_info = &tun_dst->u.tun_info; in validate_and_copy_set_tun()
2823 tun_info->mode = IP_TUNNEL_INFO_TX; in validate_and_copy_set_tun()
2825 tun_info->mode |= IP_TUNNEL_INFO_IPV6; in validate_and_copy_set_tun()
2827 tun_info->mode |= IP_TUNNEL_INFO_BRIDGE; in validate_and_copy_set_tun()
2828 tun_info->key = key.tun_key; in validate_and_copy_set_tun()
2855 /* Return false if there are any non-masked bits set.
2862 while (len--) in validate_masked()
2872 u8 mac_proto, __be16 eth_type, bool masked, bool log) in validate_set() argument
2880 return -EINVAL; in validate_set()
2883 if (masked) in validate_set()
2888 return -EINVAL; in validate_set()
2890 if (masked && !validate_masked(nla_data(ovs_key), key_len)) in validate_set()
2891 return -EINVAL; in validate_set()
2902 return -EINVAL; in validate_set()
2908 if (masked) in validate_set()
2909 return -EINVAL; /* Masked tunnel set not supported. */ in validate_set()
2921 return -EINVAL; in validate_set()
2925 if (masked) { in validate_set()
2928 /* Non-writeable fields. */ in validate_set()
2929 if (mask->ipv4_proto || mask->ipv4_frag) in validate_set()
2930 return -EINVAL; in validate_set()
2932 if (ipv4_key->ipv4_proto != flow_key->ip.proto) in validate_set()
2933 return -EINVAL; in validate_set()
2935 if (ipv4_key->ipv4_frag != flow_key->ip.frag) in validate_set()
2936 return -EINVAL; in validate_set()
2944 return -EINVAL; in validate_set()
2948 if (masked) { in validate_set()
2951 /* Non-writeable fields. */ in validate_set()
2952 if (mask->ipv6_proto || mask->ipv6_frag) in validate_set()
2953 return -EINVAL; in validate_set()
2956 if (ntohl(mask->ipv6_label) & 0xFFF00000) in validate_set()
2957 return -EINVAL; in validate_set()
2959 if (ipv6_key->ipv6_proto != flow_key->ip.proto) in validate_set()
2960 return -EINVAL; in validate_set()
2962 if (ipv6_key->ipv6_frag != flow_key->ip.frag) in validate_set()
2963 return -EINVAL; in validate_set()
2965 if (ntohl(ipv6_key->ipv6_label) & 0xFFF00000) in validate_set()
2966 return -EINVAL; in validate_set()
2973 flow_key->ip.proto != IPPROTO_TCP) in validate_set()
2974 return -EINVAL; in validate_set()
2981 flow_key->ip.proto != IPPROTO_UDP) in validate_set()
2982 return -EINVAL; in validate_set()
2988 return -EINVAL; in validate_set()
2994 flow_key->ip.proto != IPPROTO_SCTP) in validate_set()
2995 return -EINVAL; in validate_set()
3001 return -EINVAL; in validate_set()
3002 if (!validate_nsh(nla_data(a), masked, false, log)) in validate_set()
3003 return -EINVAL; in validate_set()
3007 return -EINVAL; in validate_set()
3010 /* Convert non-masked non-tunnel set actions to masked set actions. */ in validate_set()
3011 if (!masked && key_type != OVS_KEY_ATTR_TUNNEL) { in validate_set()
3029 /* Clear non-writeable bits from otherwise writeable fields. */ in validate_set()
3033 mask->ipv6_label &= htonl(0x000FFFFF); in validate_set()
3058 return -EINVAL; in validate_userspace()
3091 return -EINVAL; in validate_and_copy_check_pkt_len()
3098 return -EINVAL; in validate_and_copy_check_pkt_len()
3161 return -EOPNOTSUPP; in validate_psample()
3167 return a[OVS_PSAMPLE_ATTR_GROUP] ? 0 : -EINVAL; in validate_psample()
3173 int totlen = NLA_ALIGN(from->nla_len); in copy_action()
3176 to = reserve_sfa_size(sfa, from->nla_len, log); in copy_action()
3196 return -EOVERFLOW; in __ovs_nla_copy_actions()
3199 /* Expected argument lengths, (u32)-1 for variable length. */ in __ovs_nla_copy_actions()
3203 [OVS_ACTION_ATTR_USERSPACE] = (u32)-1, in __ovs_nla_copy_actions()
3208 [OVS_ACTION_ATTR_SET] = (u32)-1, in __ovs_nla_copy_actions()
3209 [OVS_ACTION_ATTR_SET_MASKED] = (u32)-1, in __ovs_nla_copy_actions()
3210 [OVS_ACTION_ATTR_SAMPLE] = (u32)-1, in __ovs_nla_copy_actions()
3212 [OVS_ACTION_ATTR_CT] = (u32)-1, in __ovs_nla_copy_actions()
3217 [OVS_ACTION_ATTR_PUSH_NSH] = (u32)-1, in __ovs_nla_copy_actions()
3220 [OVS_ACTION_ATTR_CLONE] = (u32)-1, in __ovs_nla_copy_actions()
3221 [OVS_ACTION_ATTR_CHECK_PKT_LEN] = (u32)-1, in __ovs_nla_copy_actions()
3223 [OVS_ACTION_ATTR_DEC_TTL] = (u32)-1, in __ovs_nla_copy_actions()
3225 [OVS_ACTION_ATTR_PSAMPLE] = (u32)-1, in __ovs_nla_copy_actions()
3233 action_lens[type] != (u32)-1)) in __ovs_nla_copy_actions()
3234 return -EINVAL; in __ovs_nla_copy_actions()
3239 return -EINVAL; in __ovs_nla_copy_actions()
3249 return -EINVAL; in __ovs_nla_copy_actions()
3255 if (trunc->max_len < ETH_HLEN) in __ovs_nla_copy_actions()
3256 return -EINVAL; in __ovs_nla_copy_actions()
3263 switch (act_hash->hash_alg) { in __ovs_nla_copy_actions()
3269 return -EINVAL; in __ovs_nla_copy_actions()
3277 return -EINVAL; in __ovs_nla_copy_actions()
3283 return -EINVAL; in __ovs_nla_copy_actions()
3285 if (!eth_type_vlan(vlan->vlan_tpid)) in __ovs_nla_copy_actions()
3286 return -EINVAL; in __ovs_nla_copy_actions()
3287 if (!(vlan->vlan_tci & htons(VLAN_CFI_MASK))) in __ovs_nla_copy_actions()
3288 return -EINVAL; in __ovs_nla_copy_actions()
3289 vlan_tci = vlan->vlan_tci; in __ovs_nla_copy_actions()
3298 if (!eth_p_mpls(mpls->mpls_ethertype)) in __ovs_nla_copy_actions()
3299 return -EINVAL; in __ovs_nla_copy_actions()
3301 if (mpls->tun_flags & OVS_MPLS_L3_TUNNEL_FLAG_MASK) { in __ovs_nla_copy_actions()
3308 return -EINVAL; in __ovs_nla_copy_actions()
3318 eth_type = mpls->mpls_ethertype; in __ovs_nla_copy_actions()
3325 if (!eth_p_mpls(mpls->mpls_ethertype)) in __ovs_nla_copy_actions()
3326 return -EINVAL; in __ovs_nla_copy_actions()
3336 return -EINVAL; in __ovs_nla_copy_actions()
3337 eth_type = mpls->mpls_ethertype; in __ovs_nla_copy_actions()
3346 return -EINVAL; in __ovs_nla_copy_actions()
3362 return -EINVAL; in __ovs_nla_copy_actions()
3364 mpls_label_count--; in __ovs_nla_copy_actions()
3417 return -EINVAL; in __ovs_nla_copy_actions()
3423 return -EINVAL; in __ovs_nla_copy_actions()
3425 return -EINVAL; in __ovs_nla_copy_actions()
3435 return -EINVAL; in __ovs_nla_copy_actions()
3439 return -EINVAL; in __ovs_nla_copy_actions()
3446 return -EINVAL; in __ovs_nla_copy_actions()
3447 inner_proto = tun_p_to_eth_p(key->nsh.base.np); in __ovs_nla_copy_actions()
3449 return -EINVAL; in __ovs_nla_copy_actions()
3450 if (key->nsh.base.np == TUN_P_ETHERNET) in __ovs_nla_copy_actions()
3458 /* Non-existent meters are simply ignored. */ in __ovs_nla_copy_actions()
3501 return -EINVAL; in __ovs_nla_copy_actions()
3512 return -EINVAL; in __ovs_nla_copy_actions()
3522 return -EINVAL; in __ovs_nla_copy_actions()
3527 /* 'key' must be the masked key. */
3539 if (eth_p_mpls(key->eth.type)) in ovs_nla_copy_actions()
3540 mpls_label_count = hweight_long(key->mpls.num_labels_mask); in ovs_nla_copy_actions()
3542 (*sfa)->orig_len = nla_len(attr); in ovs_nla_copy_actions()
3543 err = __ovs_nla_copy_actions(net, attr, key, sfa, key->eth.type, in ovs_nla_copy_actions()
3544 key->eth.vlan.tci, mpls_label_count, log, in ovs_nla_copy_actions()
3562 return -EMSGSIZE; in sample_action_to_attr()
3568 if (nla_put_u32(skb, OVS_SAMPLE_ATTR_PROBABILITY, arg->probability)) { in sample_action_to_attr()
3569 err = -EMSGSIZE; in sample_action_to_attr()
3575 err = -EMSGSIZE; in sample_action_to_attr()
3601 return -EMSGSIZE; in clone_action_to_attr()
3625 return -EMSGSIZE; in check_pkt_len_action_to_attr()
3633 if (nla_put_u16(skb, OVS_CHECK_PKT_LEN_ATTR_PKT_LEN, arg->pkt_len)) { in check_pkt_len_action_to_attr()
3634 err = -EMSGSIZE; in check_pkt_len_action_to_attr()
3645 err = -EMSGSIZE; in check_pkt_len_action_to_attr()
3664 err = -EMSGSIZE; in check_pkt_len_action_to_attr()
3693 return -EMSGSIZE; in dec_ttl_action_to_attr()
3701 err = -EMSGSIZE; in dec_ttl_action_to_attr()
3736 struct ip_tunnel_info *tun_info = &ovs_tun->tun_dst->u.tun_info; in set_action_to_attr()
3740 return -EMSGSIZE; in set_action_to_attr()
3742 err = ip_tun_to_nlattr(skb, &tun_info->key, in set_action_to_attr()
3744 tun_info->options_len, in set_action_to_attr()
3745 ip_tunnel_info_af(tun_info), tun_info->mode); in set_action_to_attr()
3753 return -EMSGSIZE; in set_action_to_attr()
3767 /* Revert the conversion we did from a non-masked set action to in masked_set_action_to_set_action_attr()
3768 * masked set action. in masked_set_action_to_set_action_attr()
3772 return -EMSGSIZE; in masked_set_action_to_set_action_attr()
3775 return -EMSGSIZE; in masked_set_action_to_set_action_attr()
3834 return -EMSGSIZE; in ovs_nla_put_actions()