Lines Matching refs:key

131     OfDpaFlowKey key;  member
214 static void of_dpa_flow_key_dump(OfDpaFlowKey *key, OfDpaFlowKey *mask) in of_dpa_flow_key_dump() argument
218 b += sprintf(b, " tbl %2d", key->tbl_id); in of_dpa_flow_key_dump()
220 if (key->in_pport || (mask && mask->in_pport)) { in of_dpa_flow_key_dump()
221 b += sprintf(b, " in_pport %2d", key->in_pport); in of_dpa_flow_key_dump()
223 b += sprintf(b, "/0x%08x", key->in_pport); in of_dpa_flow_key_dump()
227 if (key->tunnel_id || (mask && mask->tunnel_id)) { in of_dpa_flow_key_dump()
228 b += sprintf(b, " tun %8d", key->tunnel_id); in of_dpa_flow_key_dump()
230 b += sprintf(b, "/0x%08x", key->tunnel_id); in of_dpa_flow_key_dump()
234 if (key->eth.vlan_id || (mask && mask->eth.vlan_id)) { in of_dpa_flow_key_dump()
235 b += sprintf(b, " vlan %4d", ntohs(key->eth.vlan_id)); in of_dpa_flow_key_dump()
237 b += sprintf(b, "/0x%04x", ntohs(key->eth.vlan_id)); in of_dpa_flow_key_dump()
241 if (memcmp(key->eth.src.a, zero_mac.a, ETH_ALEN) || in of_dpa_flow_key_dump()
243 mac = qemu_mac_strdup_printf(key->eth.src.a); in of_dpa_flow_key_dump()
253 if (memcmp(key->eth.dst.a, zero_mac.a, ETH_ALEN) || in of_dpa_flow_key_dump()
255 mac = qemu_mac_strdup_printf(key->eth.dst.a); in of_dpa_flow_key_dump()
265 if (key->eth.type || (mask && mask->eth.type)) { in of_dpa_flow_key_dump()
266 b += sprintf(b, " type 0x%04x", ntohs(key->eth.type)); in of_dpa_flow_key_dump()
270 switch (ntohs(key->eth.type)) { in of_dpa_flow_key_dump()
273 if (key->ip.proto || (mask && mask->ip.proto)) { in of_dpa_flow_key_dump()
274 b += sprintf(b, " ip proto %2d", key->ip.proto); in of_dpa_flow_key_dump()
279 if (key->ip.tos || (mask && mask->ip.tos)) { in of_dpa_flow_key_dump()
280 b += sprintf(b, " ip tos %2d", key->ip.tos); in of_dpa_flow_key_dump()
287 switch (ntohs(key->eth.type)) { in of_dpa_flow_key_dump()
289 if (key->ipv4.addr.dst || (mask && mask->ipv4.addr.dst)) { in of_dpa_flow_key_dump()
291 inet_ntoa(*(struct in_addr *)&key->ipv4.addr.dst)); in of_dpa_flow_key_dump()
307 static void _of_dpa_flow_match(void *key, void *value, void *user_data) in _of_dpa_flow_match() argument
311 uint64_t *k = (uint64_t *)&flow->key; in _of_dpa_flow_match()
316 if (flow->key.tbl_id == match->value.tbl_id) { in _of_dpa_flow_match()
317 of_dpa_flow_key_dump(&flow->key, &flow->mask); in _of_dpa_flow_match()
320 if (flow->key.width > match->value.width) { in _of_dpa_flow_match()
324 for (i = 0; i < flow->key.width; i++, k++, m++, v++) { in _of_dpa_flow_match()
575 fc->action_set.apply.vlan_id = flow->key.eth.vlan_id; in of_dpa_apply_actions()
1064 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_ig_port() local
1074 key->tbl_id = ROCKER_OF_DPA_TABLE_ID_INGRESS_PORT; in of_dpa_cmd_add_ig_port()
1075 key->width = FLOW_KEY_WIDTH(tbl_id); in of_dpa_cmd_add_ig_port()
1077 key->in_pport = rocker_tlv_get_le32(flow_tlvs[ROCKER_TLV_OF_DPA_IN_PPORT]); in of_dpa_cmd_add_ig_port()
1083 overlay_tunnel = !!(key->in_pport & ROCKER_TUNNEL_LPORT); in of_dpa_cmd_add_ig_port()
1101 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_vlan() local
1113 key->tbl_id = ROCKER_OF_DPA_TABLE_ID_VLAN; in of_dpa_cmd_add_vlan()
1114 key->width = FLOW_KEY_WIDTH(eth.vlan_id); in of_dpa_cmd_add_vlan()
1116 key->in_pport = rocker_tlv_get_le32(flow_tlvs[ROCKER_TLV_OF_DPA_IN_PPORT]); in of_dpa_cmd_add_vlan()
1117 if (!fp_port_from_pport(key->in_pport, &port)) { in of_dpa_cmd_add_vlan()
1118 DPRINTF("in_pport (%d) not a front-panel port\n", key->in_pport); in of_dpa_cmd_add_vlan()
1123 key->eth.vlan_id = rocker_tlv_get_u16(flow_tlvs[ROCKER_TLV_OF_DPA_VLAN_ID]); in of_dpa_cmd_add_vlan()
1130 if (key->eth.vlan_id) { in of_dpa_cmd_add_vlan()
1165 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_term_mac() local
1186 key->tbl_id = ROCKER_OF_DPA_TABLE_ID_TERMINATION_MAC; in of_dpa_cmd_add_term_mac()
1187 key->width = FLOW_KEY_WIDTH(eth.type); in of_dpa_cmd_add_term_mac()
1189 key->in_pport = rocker_tlv_get_le32(flow_tlvs[ROCKER_TLV_OF_DPA_IN_PPORT]); in of_dpa_cmd_add_term_mac()
1190 if (!fp_port_from_pport(key->in_pport, &port)) { in of_dpa_cmd_add_term_mac()
1196 key->eth.type = rocker_tlv_get_u16(flow_tlvs[ROCKER_TLV_OF_DPA_ETHERTYPE]); in of_dpa_cmd_add_term_mac()
1197 if (key->eth.type != htons(0x0800) && key->eth.type != htons(0x86dd)) { in of_dpa_cmd_add_term_mac()
1202 memcpy(key->eth.dst.a, in of_dpa_cmd_add_term_mac()
1204 sizeof(key->eth.dst.a)); in of_dpa_cmd_add_term_mac()
1209 if ((key->eth.dst.a[0] & 0x01) == 0x00) { in of_dpa_cmd_add_term_mac()
1214 if (memcmp(key->eth.dst.a, ipv4_mcast.a, sizeof(key->eth.dst.a)) == 0 && in of_dpa_cmd_add_term_mac()
1218 if (memcmp(key->eth.dst.a, ipv6_mcast.a, sizeof(key->eth.dst.a)) == 0 && in of_dpa_cmd_add_term_mac()
1227 key->eth.vlan_id = rocker_tlv_get_u16(flow_tlvs[ROCKER_TLV_OF_DPA_VLAN_ID]); in of_dpa_cmd_add_term_mac()
1261 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_bridging() local
1277 key->tbl_id = ROCKER_OF_DPA_TABLE_ID_BRIDGING; in of_dpa_cmd_add_bridging()
1280 key->eth.vlan_id = in of_dpa_cmd_add_bridging()
1283 key->width = FLOW_KEY_WIDTH(eth.vlan_id); in of_dpa_cmd_add_bridging()
1287 key->tunnel_id = in of_dpa_cmd_add_bridging()
1290 key->width = FLOW_KEY_WIDTH(tunnel_id); in of_dpa_cmd_add_bridging()
1294 if (key->eth.vlan_id && key->tunnel_id) { in of_dpa_cmd_add_bridging()
1300 memcpy(key->eth.dst.a, in of_dpa_cmd_add_bridging()
1302 sizeof(key->eth.dst.a)); in of_dpa_cmd_add_bridging()
1303 key->width = FLOW_KEY_WIDTH(eth.dst); in of_dpa_cmd_add_bridging()
1305 unicast = (key->eth.dst.a[0] & 0x01) == 0x00; in of_dpa_cmd_add_bridging()
1312 key->width = FLOW_KEY_WIDTH(eth.dst); in of_dpa_cmd_add_bridging()
1318 if (key->eth.vlan_id) { in of_dpa_cmd_add_bridging()
1325 } else if (key->tunnel_id) { in of_dpa_cmd_add_bridging()
1423 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_unicast_routing() local
1437 key->tbl_id = ROCKER_OF_DPA_TABLE_ID_UNICAST_ROUTING; in of_dpa_cmd_add_unicast_routing()
1438 key->width = FLOW_KEY_WIDTH(ipv6.addr.dst); in of_dpa_cmd_add_unicast_routing()
1440 key->eth.type = rocker_tlv_get_u16(flow_tlvs[ROCKER_TLV_OF_DPA_ETHERTYPE]); in of_dpa_cmd_add_unicast_routing()
1441 switch (ntohs(key->eth.type)) { in of_dpa_cmd_add_unicast_routing()
1458 key->ipv4.addr.dst = in of_dpa_cmd_add_unicast_routing()
1460 if (ipv4_addr_is_multicast(key->ipv4.addr.dst)) { in of_dpa_cmd_add_unicast_routing()
1474 memcpy(&key->ipv6.addr.dst, in of_dpa_cmd_add_unicast_routing()
1476 sizeof(key->ipv6.addr.dst)); in of_dpa_cmd_add_unicast_routing()
1477 if (ipv6_addr_is_multicast(&key->ipv6.addr.dst)) { in of_dpa_cmd_add_unicast_routing()
1515 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_multicast_routing() local
1529 key->tbl_id = ROCKER_OF_DPA_TABLE_ID_MULTICAST_ROUTING; in of_dpa_cmd_add_multicast_routing()
1530 key->width = FLOW_KEY_WIDTH(ipv6.addr.dst); in of_dpa_cmd_add_multicast_routing()
1532 key->eth.type = rocker_tlv_get_u16(flow_tlvs[ROCKER_TLV_OF_DPA_ETHERTYPE]); in of_dpa_cmd_add_multicast_routing()
1533 switch (ntohs(key->eth.type)) { in of_dpa_cmd_add_multicast_routing()
1544 key->eth.vlan_id = rocker_tlv_get_u16(flow_tlvs[ROCKER_TLV_OF_DPA_VLAN_ID]); in of_dpa_cmd_add_multicast_routing()
1550 key->ipv4.addr.src = in of_dpa_cmd_add_multicast_routing()
1569 key->ipv4.addr.dst = in of_dpa_cmd_add_multicast_routing()
1571 if (!ipv4_addr_is_multicast(key->ipv4.addr.dst)) { in of_dpa_cmd_add_multicast_routing()
1580 memcpy(&key->ipv6.addr.src, in of_dpa_cmd_add_multicast_routing()
1582 sizeof(key->ipv6.addr.src)); in of_dpa_cmd_add_multicast_routing()
1604 memcpy(&key->ipv6.addr.dst, in of_dpa_cmd_add_multicast_routing()
1606 sizeof(key->ipv6.addr.dst)); in of_dpa_cmd_add_multicast_routing()
1607 if (!ipv6_addr_is_multicast(&key->ipv6.addr.dst)) { in of_dpa_cmd_add_multicast_routing()
1632 action->write.vlan_id = key->eth.vlan_id; in of_dpa_cmd_add_multicast_routing()
1638 static int of_dpa_cmd_add_acl_ip(OfDpaFlowKey *key, OfDpaFlowKey *mask, in of_dpa_cmd_add_acl_ip() argument
1641 key->width = FLOW_KEY_WIDTH(ip.tos); in of_dpa_cmd_add_acl_ip()
1643 key->ip.proto = 0; in of_dpa_cmd_add_acl_ip()
1644 key->ip.tos = 0; in of_dpa_cmd_add_acl_ip()
1649 key->ip.proto = in of_dpa_cmd_add_acl_ip()
1657 key->ip.tos = in of_dpa_cmd_add_acl_ip()
1665 key->ip.tos |= in of_dpa_cmd_add_acl_ip()
1678 OfDpaFlowKey *key = &flow->key; in of_dpa_cmd_add_acl() local
1704 key->tbl_id = ROCKER_OF_DPA_TABLE_ID_ACL_POLICY; in of_dpa_cmd_add_acl()
1705 key->width = FLOW_KEY_WIDTH(eth.type); in of_dpa_cmd_add_acl()
1707 key->in_pport = rocker_tlv_get_le32(flow_tlvs[ROCKER_TLV_OF_DPA_IN_PPORT]); in of_dpa_cmd_add_acl()
1714 memcpy(key->eth.src.a, in of_dpa_cmd_add_acl()
1716 sizeof(key->eth.src.a)); in of_dpa_cmd_add_acl()
1726 memcpy(key->eth.dst.a, in of_dpa_cmd_add_acl()
1728 sizeof(key->eth.dst.a)); in of_dpa_cmd_add_acl()
1737 key->eth.type = rocker_tlv_get_u16(flow_tlvs[ROCKER_TLV_OF_DPA_ETHERTYPE]); in of_dpa_cmd_add_acl()
1738 if (key->eth.type) { in of_dpa_cmd_add_acl()
1743 key->eth.vlan_id = in of_dpa_cmd_add_acl()
1752 switch (ntohs(key->eth.type)) { in of_dpa_cmd_add_acl()
1754 mode = (key->eth.vlan_id) ? ACL_MODE_ANY_VLAN : ACL_MODE_ANY_TENANT; in of_dpa_cmd_add_acl()
1757 mode = (key->eth.vlan_id) ? ACL_MODE_IPV4_VLAN : ACL_MODE_IPV4_TENANT; in of_dpa_cmd_add_acl()
1760 mode = (key->eth.vlan_id) ? ACL_MODE_IPV6_VLAN : ACL_MODE_IPV6_TENANT; in of_dpa_cmd_add_acl()
1763 mode = (key->eth.vlan_id) ? ACL_MODE_NON_IP_VLAN : in of_dpa_cmd_add_acl()
1776 switch (ntohs(key->eth.type)) { in of_dpa_cmd_add_acl()
1779 err = of_dpa_cmd_add_acl_ip(key, mask, flow_tlvs); in of_dpa_cmd_add_acl()
2296 struct of_dpa_flow_key *key = &flow->key; in of_dpa_flow_fill() local
2305 flow_context->tbl_id != key->tbl_id) { in of_dpa_flow_fill()
2310 nkey = nflow->key = g_malloc0(sizeof(*nkey)); in of_dpa_flow_fill()
2317 nkey->tbl_id = key->tbl_id; in of_dpa_flow_fill()
2319 if (key->in_pport || mask->in_pport) { in of_dpa_flow_fill()
2321 nkey->in_pport = key->in_pport; in of_dpa_flow_fill()
2329 if (key->eth.vlan_id || mask->eth.vlan_id) { in of_dpa_flow_fill()
2331 nkey->vlan_id = ntohs(key->eth.vlan_id); in of_dpa_flow_fill()
2339 if (key->tunnel_id || mask->tunnel_id) { in of_dpa_flow_fill()
2341 nkey->tunnel_id = key->tunnel_id; in of_dpa_flow_fill()
2349 if (memcmp(key->eth.src.a, zero_mac.a, ETH_ALEN) || in of_dpa_flow_fill()
2351 nkey->eth_src = qemu_mac_strdup_printf(key->eth.src.a); in of_dpa_flow_fill()
2358 if (memcmp(key->eth.dst.a, zero_mac.a, ETH_ALEN) || in of_dpa_flow_fill()
2360 nkey->eth_dst = qemu_mac_strdup_printf(key->eth.dst.a); in of_dpa_flow_fill()
2367 if (key->eth.type) { in of_dpa_flow_fill()
2370 nkey->eth_type = ntohs(key->eth.type); in of_dpa_flow_fill()
2372 switch (ntohs(key->eth.type)) { in of_dpa_flow_fill()
2375 if (key->ip.proto || mask->ip.proto) { in of_dpa_flow_fill()
2377 nkey->ip_proto = key->ip.proto; in of_dpa_flow_fill()
2383 if (key->ip.tos || mask->ip.tos) { in of_dpa_flow_fill()
2385 nkey->ip_tos = key->ip.tos; in of_dpa_flow_fill()
2394 switch (ntohs(key->eth.type)) { in of_dpa_flow_fill()
2396 if (key->ipv4.addr.dst || mask->ipv4.addr.dst) { in of_dpa_flow_fill()
2397 char *dst = inet_ntoa(*(struct in_addr *)&key->ipv4.addr.dst); in of_dpa_flow_fill()
2460 static void of_dpa_group_fill(void *key, void *value, void *user_data) in of_dpa_group_fill() argument