Lines Matching refs:key

85 	struct fl_flow_key key;  member
120 struct fl_flow_key key; member
138 .key_offset = offsetof(struct fl_flow_mask, key),
151 const u8 *bytes = (const u8 *) &mask->key; in fl_mask_update_range()
152 size_t size = sizeof(mask->key); in fl_mask_update_range()
172 static void *fl_key_get_start(struct fl_flow_key *key, in fl_key_get_start() argument
175 return (u8 *) key + mask->range.start; in fl_key_get_start()
178 static void fl_set_masked_key(struct fl_flow_key *mkey, struct fl_flow_key *key, in fl_set_masked_key() argument
181 const long *lkey = fl_key_get_start(key, mask); in fl_set_masked_key()
182 const long *lmask = fl_key_get_start(&mask->key, mask); in fl_set_masked_key()
193 const long *lmask = fl_key_get_start(&mask->key, mask); in fl_mask_fits_tmplt()
207 static void fl_clear_masked_range(struct fl_flow_key *key, in fl_clear_masked_range() argument
210 memset(fl_key_get_start(key, mask), 0, fl_mask_range(mask)); in fl_clear_masked_range()
214 struct fl_flow_key *key, in fl_range_port_dst_cmp() argument
219 min_mask = ntohs(filter->mask->key.tp_range.tp_min.dst); in fl_range_port_dst_cmp()
220 max_mask = ntohs(filter->mask->key.tp_range.tp_max.dst); in fl_range_port_dst_cmp()
221 min_val = ntohs(filter->key.tp_range.tp_min.dst); in fl_range_port_dst_cmp()
222 max_val = ntohs(filter->key.tp_range.tp_max.dst); in fl_range_port_dst_cmp()
225 if (ntohs(key->tp_range.tp.dst) < min_val || in fl_range_port_dst_cmp()
226 ntohs(key->tp_range.tp.dst) > max_val) in fl_range_port_dst_cmp()
237 struct fl_flow_key *key, in fl_range_port_src_cmp() argument
242 min_mask = ntohs(filter->mask->key.tp_range.tp_min.src); in fl_range_port_src_cmp()
243 max_mask = ntohs(filter->mask->key.tp_range.tp_max.src); in fl_range_port_src_cmp()
244 min_val = ntohs(filter->key.tp_range.tp_min.src); in fl_range_port_src_cmp()
245 max_val = ntohs(filter->key.tp_range.tp_max.src); in fl_range_port_src_cmp()
248 if (ntohs(key->tp_range.tp.src) < min_val || in fl_range_port_src_cmp()
249 ntohs(key->tp_range.tp.src) > max_val) in fl_range_port_src_cmp()
268 struct fl_flow_key *key) in fl_lookup_range() argument
273 if (!fl_range_port_dst_cmp(filter, key, mkey)) in fl_lookup_range()
276 if (!fl_range_port_src_cmp(filter, key, mkey)) in fl_lookup_range()
287 struct cls_fl_filter *fl_mask_lookup(struct fl_flow_mask *mask, struct fl_flow_key *key) in fl_mask_lookup() argument
291 fl_set_masked_key(&mkey, key, mask); in fl_mask_lookup()
293 return fl_lookup_range(mask, &mkey, key); in fl_mask_lookup()
469 cls_flower.rule->match.mask = &f->mask->key; in fl_hw_replace_filter()
470 cls_flower.rule->match.key = &f->mkey; in fl_hw_replace_filter()
802 static int fl_set_key_spi(struct nlattr **tb, struct fl_flow_key *key, in fl_set_key_spi() argument
806 if (key->basic.ip_proto != IPPROTO_ESP && in fl_set_key_spi()
807 key->basic.ip_proto != IPPROTO_AH) { in fl_set_key_spi()
813 fl_set_key_val(tb, &key->ipsec.spi, in fl_set_key_spi()
816 sizeof(key->ipsec.spi)); in fl_set_key_spi()
820 static int fl_set_key_port_range(struct nlattr **tb, struct fl_flow_key *key, in fl_set_key_port_range() argument
824 fl_set_key_val(tb, &key->tp_range.tp_min.dst, in fl_set_key_port_range()
826 TCA_FLOWER_UNSPEC, sizeof(key->tp_range.tp_min.dst)); in fl_set_key_port_range()
827 fl_set_key_val(tb, &key->tp_range.tp_max.dst, in fl_set_key_port_range()
829 TCA_FLOWER_UNSPEC, sizeof(key->tp_range.tp_max.dst)); in fl_set_key_port_range()
830 fl_set_key_val(tb, &key->tp_range.tp_min.src, in fl_set_key_port_range()
832 TCA_FLOWER_UNSPEC, sizeof(key->tp_range.tp_min.src)); in fl_set_key_port_range()
833 fl_set_key_val(tb, &key->tp_range.tp_max.src, in fl_set_key_port_range()
835 TCA_FLOWER_UNSPEC, sizeof(key->tp_range.tp_max.src)); in fl_set_key_port_range()
848 ntohs(key->tp_range.tp_max.dst) <= in fl_set_key_port_range()
849 ntohs(key->tp_range.tp_min.dst)) { in fl_set_key_port_range()
856 ntohs(key->tp_range.tp_max.src) <= in fl_set_key_port_range()
857 ntohs(key->tp_range.tp_min.src)) { in fl_set_key_port_range()
1098 struct fl_flow_key *key, in fl_set_key_pppoe() argument
1121 key->basic.n_proto = htons(ETH_P_IP); in fl_set_key_pppoe()
1124 key->basic.n_proto = htons(ETH_P_IPV6); in fl_set_key_pppoe()
1127 key->basic.n_proto = htons(ETH_P_MPLS_UC); in fl_set_key_pppoe()
1130 key->basic.n_proto = htons(ETH_P_MPLS_MC); in fl_set_key_pppoe()
1134 key->basic.n_proto = 0; in fl_set_key_pppoe()
1153 u32 key, mask; in fl_set_key_flags() local
1161 key = be32_to_cpu(nla_get_be32(tb[TCA_FLOWER_KEY_FLAGS])); in fl_set_key_flags()
1167 fl_set_key_flag(key, mask, flags_key, flags_mask, in fl_set_key_flags()
1169 fl_set_key_flag(key, mask, flags_key, flags_mask, in fl_set_key_flags()
1177 struct flow_dissector_key_ip *key, in fl_set_key_ip() argument
1185 fl_set_key_val(tb, &key->tos, tos_key, &mask->tos, tos_mask, sizeof(key->tos)); in fl_set_key_ip()
1186 fl_set_key_val(tb, &key->ttl, ttl_key, &mask->ttl, ttl_mask, sizeof(key->ttl)); in fl_set_key_ip()
1189 static int fl_set_geneve_opt(const struct nlattr *nla, struct fl_flow_key *key, in fl_set_geneve_opt() argument
1201 if (key->enc_opts.len > FLOW_DIS_TUN_OPTS_MAX - 4) in fl_set_geneve_opt()
1204 opt = (struct geneve_opt *)&key->enc_opts.data[key->enc_opts.len]; in fl_set_geneve_opt()
1241 int new_len = key->enc_opts.len; in fl_set_geneve_opt()
1277 static int fl_set_vxlan_opt(const struct nlattr *nla, struct fl_flow_key *key, in fl_set_vxlan_opt() argument
1285 md = (struct vxlan_metadata *)&key->enc_opts.data[key->enc_opts.len]; in fl_set_vxlan_opt()
1314 static int fl_set_erspan_opt(const struct nlattr *nla, struct fl_flow_key *key, in fl_set_erspan_opt() argument
1322 md = (struct erspan_metadata *)&key->enc_opts.data[key->enc_opts.len]; in fl_set_erspan_opt()
1379 static int fl_set_gtp_opt(const struct nlattr *nla, struct fl_flow_key *key, in fl_set_gtp_opt() argument
1385 u8 len = key->enc_opts.len; in fl_set_gtp_opt()
1388 sinfo = (struct gtp_pdu_session_info *)&key->enc_opts.data[len]; in fl_set_gtp_opt()
1422 static int fl_set_enc_opt(struct nlattr **tb, struct fl_flow_key *key, in fl_set_enc_opt() argument
1456 if (key->enc_opts.dst_opt_type && in fl_set_enc_opt()
1457 key->enc_opts.dst_opt_type != TUNNEL_GENEVE_OPT) { in fl_set_enc_opt()
1462 key->enc_opts.dst_opt_type = TUNNEL_GENEVE_OPT; in fl_set_enc_opt()
1463 option_len = fl_set_geneve_opt(nla_opt_key, key, in fl_set_enc_opt()
1469 key->enc_opts.len += option_len; in fl_set_enc_opt()
1481 if (key->enc_opts.len != mask->enc_opts.len) { in fl_set_enc_opt()
1487 if (key->enc_opts.dst_opt_type) { in fl_set_enc_opt()
1492 key->enc_opts.dst_opt_type = TUNNEL_VXLAN_OPT; in fl_set_enc_opt()
1493 option_len = fl_set_vxlan_opt(nla_opt_key, key, in fl_set_enc_opt()
1499 key->enc_opts.len += option_len; in fl_set_enc_opt()
1511 if (key->enc_opts.len != mask->enc_opts.len) { in fl_set_enc_opt()
1517 if (key->enc_opts.dst_opt_type) { in fl_set_enc_opt()
1522 key->enc_opts.dst_opt_type = TUNNEL_ERSPAN_OPT; in fl_set_enc_opt()
1523 option_len = fl_set_erspan_opt(nla_opt_key, key, in fl_set_enc_opt()
1529 key->enc_opts.len += option_len; in fl_set_enc_opt()
1541 if (key->enc_opts.len != mask->enc_opts.len) { in fl_set_enc_opt()
1547 if (key->enc_opts.dst_opt_type) { in fl_set_enc_opt()
1553 key->enc_opts.dst_opt_type = TUNNEL_GTP_OPT; in fl_set_enc_opt()
1554 option_len = fl_set_gtp_opt(nla_opt_key, key, in fl_set_enc_opt()
1560 key->enc_opts.len += option_len; in fl_set_enc_opt()
1572 if (key->enc_opts.len != mask->enc_opts.len) { in fl_set_enc_opt()
1631 struct flow_dissector_key_ct *key, in fl_set_key_ct() argument
1642 fl_set_key_val(tb, &key->ct_state, TCA_FLOWER_KEY_CT_STATE, in fl_set_key_ct()
1644 sizeof(key->ct_state)); in fl_set_key_ct()
1646 err = fl_validate_ct_state(key->ct_state & mask->ct_state, in fl_set_key_ct()
1658 fl_set_key_val(tb, &key->ct_zone, TCA_FLOWER_KEY_CT_ZONE, in fl_set_key_ct()
1660 sizeof(key->ct_zone)); in fl_set_key_ct()
1667 fl_set_key_val(tb, &key->ct_mark, TCA_FLOWER_KEY_CT_MARK, in fl_set_key_ct()
1669 sizeof(key->ct_mark)); in fl_set_key_ct()
1676 fl_set_key_val(tb, key->ct_labels, TCA_FLOWER_KEY_CT_LABELS, in fl_set_key_ct()
1678 sizeof(key->ct_labels)); in fl_set_key_ct()
1685 struct fl_flow_key *key, struct fl_flow_key *mask, in is_vlan_key() argument
1688 const bool good_num_of_vlans = key->num_of_vlans.num_of_vlans > vthresh; in is_vlan_key()
1699 key->basic.n_proto = *ethertype; in is_vlan_key()
1705 struct fl_flow_key *key, in fl_set_key_cfm_md_level() argument
1715 key->cfm.mdl_ver = FIELD_PREP(FLOW_DIS_CFM_MDL_MASK, level); in fl_set_key_cfm_md_level()
1720 struct fl_flow_key *key, in fl_set_key_cfm_opcode() argument
1724 fl_set_key_val(tb, &key->cfm.opcode, TCA_FLOWER_KEY_CFM_OPCODE, in fl_set_key_cfm_opcode()
1726 sizeof(key->cfm.opcode)); in fl_set_key_cfm_opcode()
1730 struct fl_flow_key *key, in fl_set_key_cfm() argument
1745 fl_set_key_cfm_opcode(nla_cfm_opt, key, mask, extack); in fl_set_key_cfm()
1746 fl_set_key_cfm_md_level(nla_cfm_opt, key, mask, extack); in fl_set_key_cfm()
1752 struct fl_flow_key *key, struct fl_flow_key *mask, in fl_set_key() argument
1762 key->meta.ingress_ifindex = err; in fl_set_key()
1766 fl_set_key_val(tb, &key->meta.l2_miss, TCA_FLOWER_L2_MISS, in fl_set_key()
1768 sizeof(key->meta.l2_miss)); in fl_set_key()
1770 fl_set_key_val(tb, key->eth.dst, TCA_FLOWER_KEY_ETH_DST, in fl_set_key()
1772 sizeof(key->eth.dst)); in fl_set_key()
1773 fl_set_key_val(tb, key->eth.src, TCA_FLOWER_KEY_ETH_SRC, in fl_set_key()
1775 sizeof(key->eth.src)); in fl_set_key()
1776 fl_set_key_val(tb, &key->num_of_vlans, in fl_set_key()
1780 sizeof(key->num_of_vlans)); in fl_set_key()
1782 if (is_vlan_key(tb[TCA_FLOWER_KEY_ETH_TYPE], &ethertype, key, mask, 0)) { in fl_set_key()
1786 &key->vlan, &mask->vlan); in fl_set_key()
1789 &ethertype, key, mask, 1)) { in fl_set_key()
1794 &key->cvlan, &mask->cvlan); in fl_set_key()
1795 fl_set_key_val(tb, &key->basic.n_proto, in fl_set_key()
1799 sizeof(key->basic.n_proto)); in fl_set_key()
1803 if (key->basic.n_proto == htons(ETH_P_PPP_SES)) in fl_set_key()
1804 fl_set_key_pppoe(tb, &key->pppoe, &mask->pppoe, key, mask); in fl_set_key()
1806 if (key->basic.n_proto == htons(ETH_P_IP) || in fl_set_key()
1807 key->basic.n_proto == htons(ETH_P_IPV6)) { in fl_set_key()
1808 fl_set_key_val(tb, &key->basic.ip_proto, TCA_FLOWER_KEY_IP_PROTO, in fl_set_key()
1810 sizeof(key->basic.ip_proto)); in fl_set_key()
1811 fl_set_key_ip(tb, false, &key->ip, &mask->ip); in fl_set_key()
1815 key->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; in fl_set_key()
1817 fl_set_key_val(tb, &key->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC, in fl_set_key()
1819 sizeof(key->ipv4.src)); in fl_set_key()
1820 fl_set_key_val(tb, &key->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST, in fl_set_key()
1822 sizeof(key->ipv4.dst)); in fl_set_key()
1824 key->control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; in fl_set_key()
1826 fl_set_key_val(tb, &key->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC, in fl_set_key()
1828 sizeof(key->ipv6.src)); in fl_set_key()
1829 fl_set_key_val(tb, &key->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST, in fl_set_key()
1831 sizeof(key->ipv6.dst)); in fl_set_key()
1834 if (key->basic.ip_proto == IPPROTO_TCP) { in fl_set_key()
1835 fl_set_key_val(tb, &key->tp.src, TCA_FLOWER_KEY_TCP_SRC, in fl_set_key()
1837 sizeof(key->tp.src)); in fl_set_key()
1838 fl_set_key_val(tb, &key->tp.dst, TCA_FLOWER_KEY_TCP_DST, in fl_set_key()
1840 sizeof(key->tp.dst)); in fl_set_key()
1841 fl_set_key_val(tb, &key->tcp.flags, TCA_FLOWER_KEY_TCP_FLAGS, in fl_set_key()
1843 sizeof(key->tcp.flags)); in fl_set_key()
1844 } else if (key->basic.ip_proto == IPPROTO_UDP) { in fl_set_key()
1845 fl_set_key_val(tb, &key->tp.src, TCA_FLOWER_KEY_UDP_SRC, in fl_set_key()
1847 sizeof(key->tp.src)); in fl_set_key()
1848 fl_set_key_val(tb, &key->tp.dst, TCA_FLOWER_KEY_UDP_DST, in fl_set_key()
1850 sizeof(key->tp.dst)); in fl_set_key()
1851 } else if (key->basic.ip_proto == IPPROTO_SCTP) { in fl_set_key()
1852 fl_set_key_val(tb, &key->tp.src, TCA_FLOWER_KEY_SCTP_SRC, in fl_set_key()
1854 sizeof(key->tp.src)); in fl_set_key()
1855 fl_set_key_val(tb, &key->tp.dst, TCA_FLOWER_KEY_SCTP_DST, in fl_set_key()
1857 sizeof(key->tp.dst)); in fl_set_key()
1858 } else if (key->basic.n_proto == htons(ETH_P_IP) && in fl_set_key()
1859 key->basic.ip_proto == IPPROTO_ICMP) { in fl_set_key()
1860 fl_set_key_val(tb, &key->icmp.type, TCA_FLOWER_KEY_ICMPV4_TYPE, in fl_set_key()
1863 sizeof(key->icmp.type)); in fl_set_key()
1864 fl_set_key_val(tb, &key->icmp.code, TCA_FLOWER_KEY_ICMPV4_CODE, in fl_set_key()
1867 sizeof(key->icmp.code)); in fl_set_key()
1868 } else if (key->basic.n_proto == htons(ETH_P_IPV6) && in fl_set_key()
1869 key->basic.ip_proto == IPPROTO_ICMPV6) { in fl_set_key()
1870 fl_set_key_val(tb, &key->icmp.type, TCA_FLOWER_KEY_ICMPV6_TYPE, in fl_set_key()
1873 sizeof(key->icmp.type)); in fl_set_key()
1874 fl_set_key_val(tb, &key->icmp.code, TCA_FLOWER_KEY_ICMPV6_CODE, in fl_set_key()
1877 sizeof(key->icmp.code)); in fl_set_key()
1878 } else if (key->basic.n_proto == htons(ETH_P_MPLS_UC) || in fl_set_key()
1879 key->basic.n_proto == htons(ETH_P_MPLS_MC)) { in fl_set_key()
1880 ret = fl_set_key_mpls(tb, &key->mpls, &mask->mpls, extack); in fl_set_key()
1883 } else if (key->basic.n_proto == htons(ETH_P_ARP) || in fl_set_key()
1884 key->basic.n_proto == htons(ETH_P_RARP)) { in fl_set_key()
1885 fl_set_key_val(tb, &key->arp.sip, TCA_FLOWER_KEY_ARP_SIP, in fl_set_key()
1887 sizeof(key->arp.sip)); in fl_set_key()
1888 fl_set_key_val(tb, &key->arp.tip, TCA_FLOWER_KEY_ARP_TIP, in fl_set_key()
1890 sizeof(key->arp.tip)); in fl_set_key()
1891 fl_set_key_val(tb, &key->arp.op, TCA_FLOWER_KEY_ARP_OP, in fl_set_key()
1893 sizeof(key->arp.op)); in fl_set_key()
1894 fl_set_key_val(tb, key->arp.sha, TCA_FLOWER_KEY_ARP_SHA, in fl_set_key()
1896 sizeof(key->arp.sha)); in fl_set_key()
1897 fl_set_key_val(tb, key->arp.tha, TCA_FLOWER_KEY_ARP_THA, in fl_set_key()
1899 sizeof(key->arp.tha)); in fl_set_key()
1900 } else if (key->basic.ip_proto == IPPROTO_L2TP) { in fl_set_key()
1901 fl_set_key_val(tb, &key->l2tpv3.session_id, in fl_set_key()
1904 sizeof(key->l2tpv3.session_id)); in fl_set_key()
1905 } else if (key->basic.n_proto == htons(ETH_P_CFM)) { in fl_set_key()
1906 ret = fl_set_key_cfm(tb, key, mask, extack); in fl_set_key()
1911 if (key->basic.ip_proto == IPPROTO_TCP || in fl_set_key()
1912 key->basic.ip_proto == IPPROTO_UDP || in fl_set_key()
1913 key->basic.ip_proto == IPPROTO_SCTP) { in fl_set_key()
1914 ret = fl_set_key_port_range(tb, key, mask, extack); in fl_set_key()
1920 ret = fl_set_key_spi(tb, key, mask, extack); in fl_set_key()
1927 key->enc_control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; in fl_set_key()
1929 fl_set_key_val(tb, &key->enc_ipv4.src, in fl_set_key()
1933 sizeof(key->enc_ipv4.src)); in fl_set_key()
1934 fl_set_key_val(tb, &key->enc_ipv4.dst, in fl_set_key()
1938 sizeof(key->enc_ipv4.dst)); in fl_set_key()
1943 key->enc_control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; in fl_set_key()
1945 fl_set_key_val(tb, &key->enc_ipv6.src, in fl_set_key()
1949 sizeof(key->enc_ipv6.src)); in fl_set_key()
1950 fl_set_key_val(tb, &key->enc_ipv6.dst, in fl_set_key()
1954 sizeof(key->enc_ipv6.dst)); in fl_set_key()
1957 fl_set_key_val(tb, &key->enc_key_id.keyid, TCA_FLOWER_KEY_ENC_KEY_ID, in fl_set_key()
1959 sizeof(key->enc_key_id.keyid)); in fl_set_key()
1961 fl_set_key_val(tb, &key->enc_tp.src, TCA_FLOWER_KEY_ENC_UDP_SRC_PORT, in fl_set_key()
1963 sizeof(key->enc_tp.src)); in fl_set_key()
1965 fl_set_key_val(tb, &key->enc_tp.dst, TCA_FLOWER_KEY_ENC_UDP_DST_PORT, in fl_set_key()
1967 sizeof(key->enc_tp.dst)); in fl_set_key()
1969 fl_set_key_ip(tb, true, &key->enc_ip, &mask->enc_ip); in fl_set_key()
1971 fl_set_key_val(tb, &key->hash.hash, TCA_FLOWER_KEY_HASH, in fl_set_key()
1973 sizeof(key->hash.hash)); in fl_set_key()
1976 ret = fl_set_enc_opt(tb, key, mask, extack); in fl_set_key()
1981 ret = fl_set_key_ct(tb, &key->ct, &mask->ct, extack); in fl_set_key()
1986 ret = fl_set_key_flags(tb, &key->control.flags, in fl_set_key()
1995 const void *psrc = fl_key_get_start(&src->key, src); in fl_mask_copy()
1996 void *pdst = fl_key_get_start(&dst->key, src); in fl_mask_copy()
2117 if ((newmask->key.tp_range.tp_min.dst && in fl_create_new_mask()
2118 newmask->key.tp_range.tp_max.dst) || in fl_create_new_mask()
2119 (newmask->key.tp_range.tp_min.src && in fl_create_new_mask()
2120 newmask->key.tp_range.tp_max.src)) in fl_create_new_mask()
2127 fl_init_dissector(&newmask->dissector, &newmask->key); in fl_create_new_mask()
2338 err = fl_set_key(net, tb, &fnew->key, &mask->key, extack); in fl_change()
2343 fl_set_masked_key(&fnew->mkey, &fnew->key, mask); in fl_change()
2354 if (fl_needs_tc_skb_ext(&mask->key)) { in fl_change()
2577 cls_flower.rule->match.mask = &f->mask->key; in fl_reoffload()
2578 cls_flower.rule->match.key = &f->mkey; in fl_reoffload()
2650 cls_flower.rule->match.key = &tmplt->dummy_key; in fl_hw_create_tmplt()
2743 cls_flower.rule->match.key = &tmplt->dummy_key; in fl_tmplt_reoffload()
2768 static int fl_dump_key_port_range(struct sk_buff *skb, struct fl_flow_key *key, in fl_dump_key_port_range() argument
2771 if (fl_dump_key_val(skb, &key->tp_range.tp_min.dst, in fl_dump_key_port_range()
2774 sizeof(key->tp_range.tp_min.dst)) || in fl_dump_key_port_range()
2775 fl_dump_key_val(skb, &key->tp_range.tp_max.dst, in fl_dump_key_port_range()
2778 sizeof(key->tp_range.tp_max.dst)) || in fl_dump_key_port_range()
2779 fl_dump_key_val(skb, &key->tp_range.tp_min.src, in fl_dump_key_port_range()
2782 sizeof(key->tp_range.tp_min.src)) || in fl_dump_key_port_range()
2783 fl_dump_key_val(skb, &key->tp_range.tp_max.src, in fl_dump_key_port_range()
2786 sizeof(key->tp_range.tp_max.src))) in fl_dump_key_port_range()
2925 struct flow_dissector_key_ip *key, in fl_dump_key_ip() argument
2933 if (fl_dump_key_val(skb, &key->tos, tos_key, &mask->tos, tos_mask, sizeof(key->tos)) || in fl_dump_key_ip()
2934 fl_dump_key_val(skb, &key->ttl, ttl_key, &mask->ttl, ttl_mask, sizeof(key->ttl))) in fl_dump_key_ip()
2977 u32 key, mask; in fl_dump_key_flags() local
2984 key = 0; in fl_dump_key_flags()
2987 fl_get_key_flag(flags_key, flags_mask, &key, &mask, in fl_dump_key_flags()
2989 fl_get_key_flag(flags_key, flags_mask, &key, &mask, in fl_dump_key_flags()
2993 _key = cpu_to_be32(key); in fl_dump_key_flags()
3121 struct flow_dissector_key_ct *key, in fl_dump_key_ct() argument
3125 fl_dump_key_val(skb, &key->ct_state, TCA_FLOWER_KEY_CT_STATE, in fl_dump_key_ct()
3127 sizeof(key->ct_state))) in fl_dump_key_ct()
3131 fl_dump_key_val(skb, &key->ct_zone, TCA_FLOWER_KEY_CT_ZONE, in fl_dump_key_ct()
3133 sizeof(key->ct_zone))) in fl_dump_key_ct()
3137 fl_dump_key_val(skb, &key->ct_mark, TCA_FLOWER_KEY_CT_MARK, in fl_dump_key_ct()
3139 sizeof(key->ct_mark))) in fl_dump_key_ct()
3143 fl_dump_key_val(skb, &key->ct_labels, TCA_FLOWER_KEY_CT_LABELS, in fl_dump_key_ct()
3145 sizeof(key->ct_labels))) in fl_dump_key_ct()
3155 struct flow_dissector_key_cfm *key, in fl_dump_key_cfm() argument
3170 mdl = FIELD_GET(FLOW_DIS_CFM_MDL_MASK, key->mdl_ver); in fl_dump_key_cfm()
3177 err = nla_put_u8(skb, TCA_FLOWER_KEY_CFM_OPCODE, key->opcode); in fl_dump_key_cfm()
3250 struct fl_flow_key *key, struct fl_flow_key *mask) in fl_dump_key() argument
3255 dev = __dev_get_by_index(net, key->meta.ingress_ifindex); in fl_dump_key()
3260 if (fl_dump_key_val(skb, &key->meta.l2_miss, in fl_dump_key()
3262 TCA_FLOWER_UNSPEC, sizeof(key->meta.l2_miss))) in fl_dump_key()
3265 if (fl_dump_key_val(skb, key->eth.dst, TCA_FLOWER_KEY_ETH_DST, in fl_dump_key()
3267 sizeof(key->eth.dst)) || in fl_dump_key()
3268 fl_dump_key_val(skb, key->eth.src, TCA_FLOWER_KEY_ETH_SRC, in fl_dump_key()
3270 sizeof(key->eth.src)) || in fl_dump_key()
3271 fl_dump_key_val(skb, &key->basic.n_proto, TCA_FLOWER_KEY_ETH_TYPE, in fl_dump_key()
3273 sizeof(key->basic.n_proto))) in fl_dump_key()
3277 if (nla_put_u8(skb, TCA_FLOWER_KEY_NUM_OF_VLANS, key->num_of_vlans.num_of_vlans)) in fl_dump_key()
3281 if (fl_dump_key_mpls(skb, &key->mpls, &mask->mpls)) in fl_dump_key()
3285 TCA_FLOWER_KEY_VLAN_PRIO, &key->vlan, &mask->vlan)) in fl_dump_key()
3290 &key->cvlan, &mask->cvlan) || in fl_dump_key()
3293 key->cvlan.vlan_tpid))) in fl_dump_key()
3299 key->basic.n_proto)) in fl_dump_key()
3303 key->vlan.vlan_eth_type)) in fl_dump_key()
3308 if ((key->basic.n_proto == htons(ETH_P_IP) || in fl_dump_key()
3309 key->basic.n_proto == htons(ETH_P_IPV6)) && in fl_dump_key()
3310 (fl_dump_key_val(skb, &key->basic.ip_proto, TCA_FLOWER_KEY_IP_PROTO, in fl_dump_key()
3312 sizeof(key->basic.ip_proto)) || in fl_dump_key()
3313 fl_dump_key_ip(skb, false, &key->ip, &mask->ip))) in fl_dump_key()
3318 key->pppoe.session_id)) in fl_dump_key()
3323 key->pppoe.ppp_proto)) in fl_dump_key()
3327 if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS && in fl_dump_key()
3328 (fl_dump_key_val(skb, &key->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC, in fl_dump_key()
3330 sizeof(key->ipv4.src)) || in fl_dump_key()
3331 fl_dump_key_val(skb, &key->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST, in fl_dump_key()
3333 sizeof(key->ipv4.dst)))) in fl_dump_key()
3335 else if (key->control.addr_type == FLOW_DISSECTOR_KEY_IPV6_ADDRS && in fl_dump_key()
3336 (fl_dump_key_val(skb, &key->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC, in fl_dump_key()
3338 sizeof(key->ipv6.src)) || in fl_dump_key()
3339 fl_dump_key_val(skb, &key->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST, in fl_dump_key()
3341 sizeof(key->ipv6.dst)))) in fl_dump_key()
3344 if (key->basic.ip_proto == IPPROTO_TCP && in fl_dump_key()
3345 (fl_dump_key_val(skb, &key->tp.src, TCA_FLOWER_KEY_TCP_SRC, in fl_dump_key()
3347 sizeof(key->tp.src)) || in fl_dump_key()
3348 fl_dump_key_val(skb, &key->tp.dst, TCA_FLOWER_KEY_TCP_DST, in fl_dump_key()
3350 sizeof(key->tp.dst)) || in fl_dump_key()
3351 fl_dump_key_val(skb, &key->tcp.flags, TCA_FLOWER_KEY_TCP_FLAGS, in fl_dump_key()
3353 sizeof(key->tcp.flags)))) in fl_dump_key()
3355 else if (key->basic.ip_proto == IPPROTO_UDP && in fl_dump_key()
3356 (fl_dump_key_val(skb, &key->tp.src, TCA_FLOWER_KEY_UDP_SRC, in fl_dump_key()
3358 sizeof(key->tp.src)) || in fl_dump_key()
3359 fl_dump_key_val(skb, &key->tp.dst, TCA_FLOWER_KEY_UDP_DST, in fl_dump_key()
3361 sizeof(key->tp.dst)))) in fl_dump_key()
3363 else if (key->basic.ip_proto == IPPROTO_SCTP && in fl_dump_key()
3364 (fl_dump_key_val(skb, &key->tp.src, TCA_FLOWER_KEY_SCTP_SRC, in fl_dump_key()
3366 sizeof(key->tp.src)) || in fl_dump_key()
3367 fl_dump_key_val(skb, &key->tp.dst, TCA_FLOWER_KEY_SCTP_DST, in fl_dump_key()
3369 sizeof(key->tp.dst)))) in fl_dump_key()
3371 else if (key->basic.n_proto == htons(ETH_P_IP) && in fl_dump_key()
3372 key->basic.ip_proto == IPPROTO_ICMP && in fl_dump_key()
3373 (fl_dump_key_val(skb, &key->icmp.type, in fl_dump_key()
3376 sizeof(key->icmp.type)) || in fl_dump_key()
3377 fl_dump_key_val(skb, &key->icmp.code, in fl_dump_key()
3380 sizeof(key->icmp.code)))) in fl_dump_key()
3382 else if (key->basic.n_proto == htons(ETH_P_IPV6) && in fl_dump_key()
3383 key->basic.ip_proto == IPPROTO_ICMPV6 && in fl_dump_key()
3384 (fl_dump_key_val(skb, &key->icmp.type, in fl_dump_key()
3387 sizeof(key->icmp.type)) || in fl_dump_key()
3388 fl_dump_key_val(skb, &key->icmp.code, in fl_dump_key()
3391 sizeof(key->icmp.code)))) in fl_dump_key()
3393 else if ((key->basic.n_proto == htons(ETH_P_ARP) || in fl_dump_key()
3394 key->basic.n_proto == htons(ETH_P_RARP)) && in fl_dump_key()
3395 (fl_dump_key_val(skb, &key->arp.sip, in fl_dump_key()
3398 sizeof(key->arp.sip)) || in fl_dump_key()
3399 fl_dump_key_val(skb, &key->arp.tip, in fl_dump_key()
3402 sizeof(key->arp.tip)) || in fl_dump_key()
3403 fl_dump_key_val(skb, &key->arp.op, in fl_dump_key()
3406 sizeof(key->arp.op)) || in fl_dump_key()
3407 fl_dump_key_val(skb, key->arp.sha, TCA_FLOWER_KEY_ARP_SHA, in fl_dump_key()
3409 sizeof(key->arp.sha)) || in fl_dump_key()
3410 fl_dump_key_val(skb, key->arp.tha, TCA_FLOWER_KEY_ARP_THA, in fl_dump_key()
3412 sizeof(key->arp.tha)))) in fl_dump_key()
3414 else if (key->basic.ip_proto == IPPROTO_L2TP && in fl_dump_key()
3415 fl_dump_key_val(skb, &key->l2tpv3.session_id, in fl_dump_key()
3419 sizeof(key->l2tpv3.session_id))) in fl_dump_key()
3422 if (key->ipsec.spi && in fl_dump_key()
3423 fl_dump_key_val(skb, &key->ipsec.spi, TCA_FLOWER_KEY_SPI, in fl_dump_key()
3425 sizeof(key->ipsec.spi))) in fl_dump_key()
3428 if ((key->basic.ip_proto == IPPROTO_TCP || in fl_dump_key()
3429 key->basic.ip_proto == IPPROTO_UDP || in fl_dump_key()
3430 key->basic.ip_proto == IPPROTO_SCTP) && in fl_dump_key()
3431 fl_dump_key_port_range(skb, key, mask)) in fl_dump_key()
3434 if (key->enc_control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS && in fl_dump_key()
3435 (fl_dump_key_val(skb, &key->enc_ipv4.src, in fl_dump_key()
3438 sizeof(key->enc_ipv4.src)) || in fl_dump_key()
3439 fl_dump_key_val(skb, &key->enc_ipv4.dst, in fl_dump_key()
3442 sizeof(key->enc_ipv4.dst)))) in fl_dump_key()
3444 else if (key->enc_control.addr_type == FLOW_DISSECTOR_KEY_IPV6_ADDRS && in fl_dump_key()
3445 (fl_dump_key_val(skb, &key->enc_ipv6.src, in fl_dump_key()
3448 sizeof(key->enc_ipv6.src)) || in fl_dump_key()
3449 fl_dump_key_val(skb, &key->enc_ipv6.dst, in fl_dump_key()
3453 sizeof(key->enc_ipv6.dst)))) in fl_dump_key()
3456 if (fl_dump_key_val(skb, &key->enc_key_id, TCA_FLOWER_KEY_ENC_KEY_ID, in fl_dump_key()
3458 sizeof(key->enc_key_id)) || in fl_dump_key()
3459 fl_dump_key_val(skb, &key->enc_tp.src, in fl_dump_key()
3463 sizeof(key->enc_tp.src)) || in fl_dump_key()
3464 fl_dump_key_val(skb, &key->enc_tp.dst, in fl_dump_key()
3468 sizeof(key->enc_tp.dst)) || in fl_dump_key()
3469 fl_dump_key_ip(skb, true, &key->enc_ip, &mask->enc_ip) || in fl_dump_key()
3470 fl_dump_key_enc_opt(skb, &key->enc_opts, &mask->enc_opts)) in fl_dump_key()
3473 if (fl_dump_key_ct(skb, &key->ct, &mask->ct)) in fl_dump_key()
3476 if (fl_dump_key_flags(skb, key->control.flags, mask->control.flags)) in fl_dump_key()
3479 if (fl_dump_key_val(skb, &key->hash.hash, TCA_FLOWER_KEY_HASH, in fl_dump_key()
3481 sizeof(key->hash.hash))) in fl_dump_key()
3484 if (fl_dump_key_cfm(skb, &key->cfm, &mask->cfm)) in fl_dump_key()
3498 struct fl_flow_key *key, *mask; in fl_dump() local
3516 key = &f->key; in fl_dump()
3517 mask = &f->mask->key; in fl_dump()
3520 if (fl_dump_key(skb, net, key, mask)) in fl_dump()
3596 struct fl_flow_key *key, *mask; in fl_tmplt_dump() local
3603 key = &tmplt->dummy_key; in fl_tmplt_dump()
3606 if (fl_dump_key(skb, net, key, mask)) in fl_tmplt_dump()