Exemplo n.º 1
0
void
test_channel_local_addr_get_set_unset(void) {
    lagopus_result_t ret;
    struct channel *channel;
    struct addrunion addr  = {0,{{0}}};
    struct addrunion addr1 = {0,{{0}}};

    channel = s_create_data_channel();
    addrunion_ipv4_set(&addr, "127.0.0.1");
    ret = channel_local_addr_set(channel, &addr);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_addr_set() error.");

    ret = channel_local_addr_get(channel, &addr1);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_addr_get() error.");
    TEST_ASSERT_EQUAL_MEMORY_MESSAGE(&addr, &addr1, sizeof(addr),
                                     "channel_local_addr_get() addr error");

    ret = channel_local_addr_unset(channel);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_addr_unset() error.");

    ret = channel_local_addr_get(channel, &addr1);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_addr_get() error.");
    addrunion_ipv4_set(&addr, "0.0.0.0");
    TEST_ASSERT_EQUAL_MEMORY_MESSAGE(&addr, &addr1, sizeof(addr),
                                     "channel_local_addr_get() addr  error");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 2
0
void
test_channel_local_port_get_set_unset(void) {
    uint16_t port;
    lagopus_result_t ret;
    struct channel *channel;

    channel = s_create_data_channel();
    ret = channel_local_port_set(channel, 10101);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_port_set() error.");

    ret = channel_local_port_get(channel, &port);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_port_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(10101, port,
                              "channel_local_port_get() port  error");

    ret = channel_local_port_unset(channel);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_port_unset() error.");

    ret = channel_local_port_get(channel, &port);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_port_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(0, port,
                              "channel_local_port_get() port error");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 3
0
void
test_channel_proto_get_set_unset(void) {
    lagopus_result_t ret;
    struct channel *channel;
    enum channel_protocol protocol;

    channel = s_create_data_channel();
    ret = channel_protocol_set(channel, PROTOCOL_TCP6);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_protocol_set() error.");

    ret = channel_protocol_get(channel, &protocol);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_protocol_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(PROTOCOL_TCP6, protocol,
                              "channel_protocol_get() proto error");

    ret = channel_protocol_unset(channel);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_protocol_unset() error.");

    ret = channel_protocol_get(channel, &protocol);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_protocol_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(PROTOCOL_TCP, protocol,
                              "channel_protocol_get() proto error");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 4
0
void
test_channel_xid_get_set(void) {
    struct channel *channel;
    uint32_t ret_xid;
    uint32_t xid = 0x10;

    channel = s_create_data_channel();

    /* Call func. */
    channel_xid_set(channel, xid);
    ret_xid = channel_xid_get(channel);

    TEST_ASSERT_EQUAL_MESSAGE(ret_xid, xid,
                              "xid error.");

    /* incrementation */
    /* Call func. */
    ret_xid = channel_xid_get(channel);

    TEST_ASSERT_EQUAL_MESSAGE(ret_xid, xid + 1,
                              "xid incrementation error.");

    /* max */
    /* Call func. */
    channel_xid_set(channel, UINT32_MAX);
    ret_xid = channel_xid_get(channel);

    TEST_ASSERT_EQUAL_MESSAGE(ret_xid, 100 /*START_XID*/,
                              "xid max error.");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 5
0
void
test_channel_session_get_set(void) {
    struct channel *channel;
    lagopus_session_t session;
    lagopus_session_t ret_session;

    channel = s_create_data_channel();

    (void) session_create(SESSION_TCP|SESSION_ACTIVE, &session);
    TEST_ASSERT_NOT_EQUAL_MESSAGE(session, channel_session_get(channel),
                                  "session error.");
    session_destroy(channel_session_get(channel));

    /* Call func. */
    channel_session_set(channel, session);
    ret_session = channel_session_get(channel);

    TEST_ASSERT_EQUAL_MESSAGE(ret_session, session,
                              "session error.");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 6
0
struct channel *
create_data_channel(void) {
  static uint8_t cnt;
  char buf[256];
  struct channel *channel;
  struct session *session;
  struct addrunion addr;
  struct port port;
  uint64_t dpid = 0xabc;
  uint8_t port_hw_addr[OFP_ETH_ALEN] = {0xff, 0xff, 0xff,
                                        0xff, 0xff, 0xff
                                       };

  if (s_dpmgr == NULL) {
    s_dpmgr = dpmgr_alloc();
    dpmgr_bridge_add(s_dpmgr, "br0", dpid);
    dpmgr_controller_add(s_dpmgr, "br0", "127.0.0.1");
    port.ofp_port.port_no = 0;
    memcpy(port.ofp_port.hw_addr, port_hw_addr, OFP_ETH_ALEN);
    port.ifindex = 0;
    dpmgr_port_add(s_dpmgr, &port);
    dpmgr_bridge_port_add(s_dpmgr, "br0", 0, 0);
  }
  if (s_bridge == NULL) {
    s_bridge = dpmgr_bridge_lookup(s_dpmgr, "br0");
  }
  if (s_event_manager == NULL) {
    s_event_manager = event_manager_alloc();
    channel_mgr_initialize(s_event_manager);
  }

  snprintf(buf, sizeof(buf), "127.0.0.%u", cnt++);//XXX
  addrunion_ipv4_set(&addr, buf);
  channel_mgr_channel_add(s_bridge, dpid, &addr);
  channel_mgr_channel_lookup(s_bridge, &addr, &channel);


  session = channel_session_get(channel);
  session_write_set(session, s_write_tcp);
  session_sockfd_set(session, 3);

  channel_version_set(channel, 0x04);
  channel_xid_set(channel, s_xid);

  return channel;
}
Exemplo n.º 7
0
void
test_channel_version_get_set(void) {
    struct channel *channel;
    uint8_t ret_version;
    uint8_t version = 0x10;

    channel = s_create_data_channel();

    /* Call func. */
    channel_version_set(channel, version);
    ret_version = channel_version_get(channel);

    TEST_ASSERT_EQUAL_MESSAGE(ret_version, version,
                              "version error.");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 8
0
void
test_channel_dpid_get_set(void) {
    uint64_t dpid;
    lagopus_result_t ret;
    struct channel *channel;

    channel = s_create_data_channel();

    /* Call func. */
    ret = channel_dpid_set(channel, 0xbeef);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_dpid_set() error.");
    dpid = channel_dpid_get(channel);

    TEST_ASSERT_EQUAL_MESSAGE(dpid, 0xbeef,
                              "dpid error.");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 9
0
void
test_channel_auxiliary_get_set(void) {
    bool is_auxiliary;
    lagopus_result_t ret;
    struct channel *channel;

    channel = s_create_data_channel();

    /* Call func. */
    ret = channel_auxiliary_set(channel, true);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_auxiliary_set() error.");
    ret = channel_auxiliary_get(channel, &is_auxiliary);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_auxiliary_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(is_auxiliary, true,
                              "auxiliary error.");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 10
0
void
test_channel_alloc_default_value(void) {
    uint16_t port;
    lagopus_result_t ret;
    struct channel *channel;
    enum channel_protocol protocol;
    struct addrunion addr  = {0,{{0}}};
    struct addrunion addr1 = {0,{{0}}};

    TEST_ASSERT_EQUAL_MEMORY_MESSAGE(&addr, &addr1, sizeof(addr),
                                     "channel_addr_get() addr error");
    channel = s_create_data_channel();
    addrunion_ipv4_set(&addr1, "127.0.0.1");

    ret = channel_port_get(channel, &port);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "channel_port_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(6633, port, "channel_port_get() port error");

    ret = channel_local_port_get(channel, &port);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_local_port_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(0, port, "channel_local_port_get() port error");

    ret = channel_protocol_get(channel, &protocol);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_protocol_get() error.");
    TEST_ASSERT_EQUAL_MESSAGE(PROTOCOL_TCP, protocol,
                              "channel_protocol_get() proto error");

    ret = channel_addr_get(channel, &addr);
    TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                              "channel_addr_get() error.");
    TEST_ASSERT_EQUAL_MEMORY_MESSAGE(&addr1, &addr, sizeof(addr),
                                     "channel_addr_get() addr error");

    session_destroy(channel_session_get(channel));
    free(channel);
}
Exemplo n.º 11
0
struct channel *
create_data_channel(void) {
  static uint8_t cnt;
  char buf[256];
  struct channel *channel;
  lagopus_session_t session;
  struct addrunion addr;
  uint64_t dpid = 0xabc;

  if (s_is_init == false) {
    s_is_init = true;

    /* init dataplane. */
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK, dp_api_init());

    /* interface. */
    s_interface_info.type = DATASTORE_INTERFACE_TYPE_ETHERNET_RAWSOCK;
    s_interface_info.eth_rawsock.port_number = 0;
    s_interface_info.eth_dpdk_phy.device = strdup("eth0");
    if (s_interface_info.eth_dpdk_phy.device == NULL) {
      TEST_FAIL_MESSAGE("device is NULL.");
    }
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK,
                      dp_interface_create(interface_name));
    dp_interface_info_set(interface_name, &s_interface_info);

    /* port. */
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK,
                      dp_port_create(port_name));
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK,
                      dp_port_interface_set(port_name, interface_name));

    /* bridge. */
    ofp_bridgeq_mgr_initialize(NULL);
    s_bridge_info.dpid = dpid;
    s_bridge_info.fail_mode = DATASTORE_BRIDGE_FAIL_MODE_SECURE;
    s_bridge_info.max_buffered_packets = UINT32_MAX;
    s_bridge_info.max_ports = UINT16_MAX;
    s_bridge_info.max_tables = UINT8_MAX;
    s_bridge_info.max_flows = UINT32_MAX;
    s_bridge_info.capabilities = UINT64_MAX;
    s_bridge_info.action_types = UINT64_MAX;
    s_bridge_info.instruction_types = UINT64_MAX;
    s_bridge_info.reserved_port_types = UINT64_MAX;
    s_bridge_info.group_types = UINT64_MAX;
    s_bridge_info.group_capabilities = UINT64_MAX;
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK,
                      dp_bridge_create(bridge_name, &s_bridge_info));
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK,
                      dp_bridge_port_set(bridge_name, port_name, 0));
    TEST_ASSERT_EQUAL(LAGOPUS_RESULT_OK,
                      ofp_bridgeq_mgr_bridge_register(
                          dpid,
                          bridge_name,
                          &s_bridge_info,
                          &s_queue_info));
    channel_mgr_initialize();
  }

  snprintf(buf, sizeof(buf), "127.0.0.%u", cnt++);//XXX
  addrunion_ipv4_set(&addr, buf);
  channel_mgr_channel_add(bridge_name, dpid, &addr);
  channel_mgr_channel_lookup(bridge_name, &addr, &channel);


  session = channel_session_get(channel);
  session_write_set(session, s_write_tcp);
  session_sockfd_set(session, 3);

  channel_version_set(channel, 0x04);
  channel_xid_set(channel, s_xid);

  return channel;
}