Example #1
0
lagopus_result_t
dp_interface_configure_internal(struct interface *ifp) {
  lagopus_result_t rv;

  rv = LAGOPUS_RESULT_INVALID_ARGS;
  switch (ifp->info.type) {
    case DATASTORE_INTERFACE_TYPE_ETHERNET_DPDK_PHY:
    case DATASTORE_INTERFACE_TYPE_ETHERNET_DPDK_PCAP:
#ifdef HAVE_DPDK
      rv = dpdk_configure_interface(ifp);
#endif
      break;
    case DATASTORE_INTERFACE_TYPE_ETHERNET_RAWSOCK:
      rv = rawsock_configure_interface(ifp);
      break;

    case DATASTORE_INTERFACE_TYPE_UNKNOWN:
      ifp->stats = unknown_port_stats;
      rv = LAGOPUS_RESULT_OK;
      break;

    case DATASTORE_INTERFACE_TYPE_VXLAN:
      /* TODO */
      rv = LAGOPUS_RESULT_OK;
      break;
    default:
      break;
  }

  return rv;
}
Example #2
0
lagopus_result_t
dp_interface_configure_internal(struct interface *ifp) {
  lagopus_result_t rv;

  switch (ifp->info.type) {
    case DATASTORE_INTERFACE_TYPE_ETHERNET_DPDK_PHY:
    case DATASTORE_INTERFACE_TYPE_ETHERNET_DPDK_VDEV:
#ifdef HAVE_DPDK
      rv = dpdk_configure_interface(ifp);
#else
      rv = LAGOPUS_RESULT_INVALID_ARGS;
#endif /* HAVE_DPDK */
      break;

    case DATASTORE_INTERFACE_TYPE_ETHERNET_RAWSOCK:
      rv = rawsock_configure_interface(ifp);
      break;

    case DATASTORE_INTERFACE_TYPE_UNKNOWN:
      rv = LAGOPUS_RESULT_OK;
      break;

    case DATASTORE_INTERFACE_TYPE_GRE:
    case DATASTORE_INTERFACE_TYPE_NVGRE:
    case DATASTORE_INTERFACE_TYPE_VXLAN:
    case DATASTORE_INTERFACE_TYPE_VHOST_USER:
      /* TODO */
      rv = LAGOPUS_RESULT_OK;
      break;

    default:
      rv = LAGOPUS_RESULT_INVALID_ARGS;
      break;
  }
  if (rv == LAGOPUS_RESULT_OK) {
    dp_interface_hw_addr_get_internal(ifp, ifp->hw_addr);
#ifdef HYBRID
    rv = dp_tap_interface_create(ifp->name, ifp);
#endif /* HYBRID */
  } else {
    ifp->info.type = DATASTORE_INTERFACE_TYPE_UNKNOWN;
  }

  return rv;
}