Exemplo n.º 1
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.º 2
0
void
test_ofp_port_stats_reply_create_null(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  struct event_manager *em = event_manager_alloc();
  struct channel *channel = channel_alloc_ip4addr("127.0.0.1", "1000",
                            em, 0x01);
  struct pbuf_list *pbuf_list = NULL;
  struct port_stats_list port_stats_list;
  struct ofp_header xid_header;

  ret = ofp_port_stats_reply_create(NULL,
                                    &pbuf_list,
                                    &port_stats_list,
                                    &xid_header);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "NULL-check error. (channel)");

  ret = ofp_port_stats_reply_create(channel,
                                    NULL,
                                    &port_stats_list,
                                    &xid_header);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "NULL-check error. (pbuf)");

  ret = ofp_port_stats_reply_create(channel,
                                    &pbuf_list,
                                    NULL,
                                    &xid_header);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS,
                            ret,
                            "NULL-check error. (port_stats_list)");

  ret = ofp_port_stats_reply_create(channel,
                                    &pbuf_list,
                                    &port_stats_list,
                                    NULL);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS,
                            ret,
                            "NULL-check error. (xid-header)");
  channel_free(channel);
  event_manager_free(em);
}
void
test_ofp_queue_get_config_reply_create_null(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  struct event_manager *em = event_manager_alloc();
  struct channel *channel = channel_alloc_ip4addr("127.0.0.1", "1000",
                            em, 0x01);
  struct pbuf *pbuf = pbuf_alloc(65535);
  static struct packet_queue_list packet_queue_list;
  struct ofp_header ofp_header;

  ret = ofp_queue_get_config_reply_create(NULL, &pbuf, 0,
                                          &packet_queue_list,
                                          &ofp_header);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "NULL-check error. (channel)");

  ret = ofp_queue_get_config_reply_create(channel, NULL, 0,
                                          &packet_queue_list,
                                          &ofp_header);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "NULL-check error. (pbuf)");

  ret = ofp_queue_get_config_reply_create(channel, &pbuf, 0,
                                          NULL, &ofp_header);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "NULL-check error. (packet_queue_list)");

  ret = ofp_queue_get_config_reply_create(channel, &pbuf, 0,
                                          &packet_queue_list,
                                          NULL);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "NULL-check error. (ofp_header)");

  channel_free(channel);
  pbuf_free(pbuf);
  event_manager_free(em);
}
void
test_ofp_barrier_reply_send_null(void) {
  lagopus_result_t ret;
  struct eventq_data *ed;
  uint64_t dpid = 0x10;
  struct event_manager *em = event_manager_alloc();
  struct channel *channel =
    channel_alloc_ip4addr("127.0.0.1", "1000", em, 0x01);

  ed = create_data(OFPT_BARRIER_REPLY);

  ret = ofp_barrier_reply_send(NULL, &ed->barrier, dpid);
  TEST_ASSERT_EQUAL_MESSAGE(ret, LAGOPUS_RESULT_INVALID_ARGS,
                            "ofp_barrier_reply_send error.");

  ret = ofp_barrier_reply_send(channel, NULL, dpid);
  TEST_ASSERT_EQUAL_MESSAGE(ret, LAGOPUS_RESULT_INVALID_ARGS,
                            "ofp_barrier_reply_send error.");

  /* after. */
  ofp_barrier_free(ed);
  channel_free(channel);
  event_manager_free(em);
}
Exemplo n.º 5
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));
  }
  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(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;
}