void setUp(void) { size_t s; lagopus_ip_address_t *addr; struct sockaddr_in *sin; uint8_t *p; /* Make the root flowinfo. */ TEST_ASSERT_NULL(flowinfo); flowinfo = new_flowinfo_vlan_vid(); TEST_ASSERT_NOT_NULL(flowinfo); TEST_ASSERT_FLOWINFO_FLOW_NUM(flowinfo, 0, __func__); /* * Make the test flows. * * ARP matches have the prerequisite. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { TEST_ASSERT_NULL(test_flow[s]); test_flow[s] = allocate_test_flow(10 * sizeof(struct match)); TEST_ASSERT_NOT_NULL(test_flow[s]); test_flow[s]->priority = (int)s; FLOW_ADD_ARP_PREREQUISITE(test_flow[s]); } /* Make the test addresses. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { lagopus_ip_address_create(ipv4srcstr, true, &addr); sin = NULL; lagopus_ip_address_sockaddr_get(addr, &sin); lagopus_ip_address_destroy(addr); p = (uint8_t *)&sin->sin_addr.s_addr; p[sizeof(sin->sin_addr.s_addr) - 1] = (uint8_t)(TEST_IPV4_ADDR_LSB(s) & 0xff); OS_MEMCPY(&ipv4src[s], &sin->sin_addr, sizeof(ipv4src[s])); lagopus_ip_address_create(ipv4tgtstr, true, &addr); sin = NULL; lagopus_ip_address_sockaddr_get(addr, &sin); lagopus_ip_address_destroy(addr); p = (uint8_t *)&sin->sin_addr.s_addr; p[sizeof(sin->sin_addr.s_addr) - 1] = (uint8_t)(TEST_IPV4_ADDR_LSB(s) & 0xff); OS_MEMCPY(&ipv4tgt[s], &sin->sin_addr, sizeof(ipv4tgt[s])); lagopus_ip_address_create(ipv4maskstr, true, &addr); sin = NULL; lagopus_ip_address_sockaddr_get(addr, &sin); lagopus_ip_address_destroy(addr); OS_MEMCPY(&ipv4mask[s], &sin->sin_addr, sizeof(ipv4mask[s])); } }
void setUp(void) { size_t s; struct addrunion au; uint8_t *p; /* Make the root flowinfo. */ TEST_ASSERT_NULL(flowinfo); flowinfo = new_flowinfo_vlan_vid(); TEST_ASSERT_NOT_NULL(flowinfo); TEST_ASSERT_FLOWINFO_FLOW_NUM(flowinfo, 0, __func__); /* * Make the test flows. * * ARP matches have the prerequisite. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { TEST_ASSERT_NULL(test_flow[s]); test_flow[s] = allocate_test_flow(10 * sizeof(struct match)); TEST_ASSERT_NOT_NULL(test_flow[s]); test_flow[s]->priority = (int)s; FLOW_ADD_ARP_PREREQUISITE(test_flow[s]); } /* Make the test addresses. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { addrunion_ipv4_set(&au, ipv4srcstr); p = (uint8_t *)&au.addr4.s_addr; p[sizeof(au.addr4.s_addr) - 1] = (uint8_t)(TEST_IPV4_ADDR_LSB(s) & 0xff); OS_MEMCPY(&ipv4src[s], &au.addr4, sizeof(ipv4src[s])); addrunion_ipv4_set(&au, ipv4tgtstr); p = (uint8_t *)&au.addr4.s_addr; p[sizeof(au.addr4.s_addr) - 1] = (uint8_t)(TEST_IPV4_ADDR_LSB(s) & 0xff); OS_MEMCPY(&ipv4tgt[s], &au.addr4, sizeof(ipv4tgt[s])); addrunion_ipv4_set(&au, ipv4maskstr); OS_MEMCPY(&ipv4mask[s], &au.addr4, sizeof(ipv4mask[s])); } }
void test_flowinfo_arp_tpa_w_adddel(void) { size_t s; TEST_ASSERT_OBJECTS(); /* Add the ARP IPv4 target address matches. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { FLOW_ADD_ARP_TPA_W_MATCH(test_flow[s], &ipv4tgt[s], ipv4mask); } /* Run the sideeffect-free scenario. */ TEST_SCENARIO_FLOWINFO_SEF(flowinfo); /* Reset the matches. Mind the prerequisite. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { TAILQ_INIT(&test_flow[s]->match_list); FLOW_ADD_ARP_PREREQUISITE(test_flow[s]); } }
void test_flowinfo_arp_op_adddel(void) { size_t s; TEST_ASSERT_OBJECTS(); /* Add the ARP operation matches. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { FLOW_ADD_ARP_OP_MATCH(test_flow[s], TEST_ARP_OP(s)); } /* Run the sideeffect-free scenario. */ TEST_SCENARIO_FLOWINFO_SEF(flowinfo); /* Reset the matches. Mind the prerequisite. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { TAILQ_INIT(&test_flow[s]->match_list); FLOW_ADD_ARP_PREREQUISITE(test_flow[s]); } }
void test_flowinfo_arp_tha_w_adddel(void) { size_t s; uint8_t addr[OFP_ETH_ALEN]; TEST_ASSERT_OBJECTS(); /* Add the ARP MAC target address matches. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { OS_MEMCPY(addr, mactgt, sizeof(addr)); addr[sizeof(addr) - 1] = TEST_ETH_ADDR_LSB(s); FLOW_ADD_ARP_THA_W_MATCH(test_flow[s], addr, macmask); } /* Run the sideeffect-free scenario. */ TEST_SCENARIO_FLOWINFO_SEF(flowinfo); /* Reset the matches. Mind the prerequisite. */ for (s = 0; s < ARRAY_LEN(test_flow); s++) { TAILQ_INIT(&test_flow[s]->match_list); FLOW_ADD_ARP_PREREQUISITE(test_flow[s]); } }