Ejemplo n.º 1
0
void
test_bridge_table_id_iter(void) {
  dp_bridge_iter_t iter;
  uint8_t ids[] = { 0, 5, 10 };
  uint8_t id;
  int i;
  lagopus_result_t rv;

  iter = NULL;
  TEST_ASSERT_EQUAL(dp_bridge_table_id_iter_create(bridge_name, &iter),
                    LAGOPUS_RESULT_OK);
  TEST_ASSERT_NOT_NULL(iter);
  for (i = 0; i < sizeof(ids) / sizeof(ids[0]); i++) {
    TEST_ASSERT_NOT_NULL(flowdb_get_table(bridge->flowdb, ids[i]));
  }
  i = 0;
  while ((rv = dp_bridge_table_id_iter_get(iter, &id)) == LAGOPUS_RESULT_OK) {
    TEST_ASSERT_NOT_EQUAL(i, sizeof(ids) / sizeof(ids[0]));
    TEST_ASSERT_EQUAL(id, ids[i]);
    i++;
  }
  TEST_ASSERT_EQUAL(rv, LAGOPUS_RESULT_EOF);
  dp_bridge_table_id_iter_destroy(iter);
}
Ejemplo n.º 2
0
void
test_lagopus_find_flow(void) {
    datastore_bridge_info_t info;
    struct bridge *bridge;
    struct port *port;
    struct port nport;
    struct lagopus_packet *pkt;
    struct table *table;
    struct flow *flow;
    OS_MBUF *m;

    /* setup bridge and port */
    memset(&info, 0, sizeof(info));
    info.fail_mode = DATASTORE_BRIDGE_FAIL_MODE_SECURE;
    TEST_ASSERT_EQUAL(dp_bridge_create("br0", &info), LAGOPUS_RESULT_OK);
    TEST_ASSERT_EQUAL(dp_port_create("port0"), LAGOPUS_RESULT_OK);
    TEST_ASSERT_EQUAL(dp_port_create("port1"), LAGOPUS_RESULT_OK);
    TEST_ASSERT_EQUAL(dp_bridge_port_set("br0", "port0", 1), LAGOPUS_RESULT_OK);
    TEST_ASSERT_EQUAL(dp_bridge_port_set("br0", "port1", 2), LAGOPUS_RESULT_OK);

    pkt = alloc_lagopus_packet();
    TEST_ASSERT_NOT_NULL_MESSAGE(pkt, "lagopus_alloc_packet error.");
    m = pkt->mbuf;
    OS_M_APPEND(m, 64);
    m->refcnt = 2;

    bridge = dp_bridge_lookup("br0");
    TEST_ASSERT_NOT_NULL(bridge);
    lagopus_packet_init(pkt, m, port_lookup(&bridge->ports, 1));
    table = flowdb_get_table(pkt->in_port->bridge->flowdb, 0);
    table->userdata = new_flowinfo_eth_type();
    flow = lagopus_find_flow(pkt, table);
    TEST_ASSERT_EQUAL_MESSAGE(table->lookup_count, 0,
                              "lookup_count(misc) error.");
    TEST_ASSERT_NULL_MESSAGE(flow,
                             "flow(misc) error.");
    OS_MTOD(m, uint8_t *)[14] = 0x08;
    OS_MTOD(m, uint8_t *)[15] = 0x06;
    lagopus_packet_init(pkt, m, &port);
    flow = lagopus_find_flow(pkt, table);
    TEST_ASSERT_EQUAL_MESSAGE(table->lookup_count, 0,
                              "lookup_count(arp) error.");
    TEST_ASSERT_NULL_MESSAGE(flow,
                             "flow(arp) error.");
    OS_MTOD(m, uint8_t *)[14] = 0x08;
    OS_MTOD(m, uint8_t *)[15] = 0x00;
    lagopus_packet_init(pkt, m, port_lookup(&bridge->ports, 1));
    flow = lagopus_find_flow(pkt, table);
    TEST_ASSERT_EQUAL_MESSAGE(table->lookup_count, 0,
                              "lookup_count(ipv4) error.");
    TEST_ASSERT_NULL_MESSAGE(flow,
                             "flow(ipv4) error.");
    OS_MTOD(m, uint8_t *)[14] = 0x86;
    OS_MTOD(m, uint8_t *)[15] = 0xdd;
    OS_MTOD(m, uint8_t *)[20] = IPPROTO_TCP;
    lagopus_packet_init(pkt, m, port_lookup(&bridge->ports, 1));
    flow = lagopus_find_flow(pkt, table);
    TEST_ASSERT_EQUAL_MESSAGE(table->lookup_count, 0,
                              "lookup_count(ipv6) error.");
    TEST_ASSERT_NULL_MESSAGE(flow,
                             "flow(ipv6) error.");
    OS_MTOD(m, uint8_t *)[14] = 0x88;
    OS_MTOD(m, uint8_t *)[15] = 0x47;
    lagopus_packet_init(pkt, m, port_lookup(&bridge->ports, 1));
    flow = lagopus_find_flow(pkt, table);
    TEST_ASSERT_EQUAL_MESSAGE(table->lookup_count, 0,
                              "lookup_count(mpls) error.");
    TEST_ASSERT_NULL_MESSAGE(flow,
                             "flow(mpls) error.");
    OS_MTOD(m, uint8_t *)[14] = 0x88;
    OS_MTOD(m, uint8_t *)[15] = 0x48;
    lagopus_packet_init(pkt, m, port_lookup(&bridge->ports, 1));
    flow = lagopus_find_flow(pkt, table);
    TEST_ASSERT_EQUAL_MESSAGE(table->lookup_count, 0,
                              "lookup_count(mpls-mc) error.");
    TEST_ASSERT_NULL_MESSAGE(flow,
                             "flow(mpls-mc) error.");
    OS_MTOD(m, uint8_t *)[14] = 0x88;
    OS_MTOD(m, uint8_t *)[15] = 0xe7;
    lagopus_packet_init(pkt, m, port_lookup(&bridge->ports, 1));
    flow = lagopus_find_flow(pkt, table);
    TEST_ASSERT_EQUAL_MESSAGE(table->lookup_count, 0,
                              "lookup_count(pbb) error.");
    TEST_ASSERT_NULL_MESSAGE(flow,
                             "flow(pbb) error.");
}