Example #1
0
struct net_if* net_if_alloc(int net_if_id, const char* name, int rss_set_size)
{
  struct net_if* net_if = malloc(sizeof(*net_if));
  int ifindex;
  char dummy;

  if( (ifindex = if_nametoindex(name)) == 0 )
    if( sscanf(name, "%u%c", &ifindex, &dummy) != 1 )
      return NULL;
  net_if->name = strdup(name);
  TEST(net_if_id >= 0 && net_if_id < MAX_NET_IFS);
  net_if->id = net_if_id;
  net_if->ifindex = ifindex;
  if( ef_driver_open(&net_if->dh) < 0 )
    goto fail1;
  if( ef_pd_alloc(&net_if->pd, net_if->dh, net_if->ifindex, EF_PD_DEFAULT) < 0 )
    goto fail2;
  net_if->vi_set_size = rss_set_size;
  if( rss_set_size > 0 )
    TRY(ef_vi_set_alloc_from_pd(&net_if->vi_set, net_if->dh,
                                &net_if->pd, net_if->dh, rss_set_size));
  return net_if;

 fail2:
  ef_driver_close(net_if->dh);
 fail1:
  free(net_if);
  return NULL;
}
Example #2
0
static void do_free(void)
{
  TRY(ef_vi_filter_del(&vi, driver_handle, &filter_cookie));
  TRY(ef_vi_flush(&vi, driver_handle));
  TRY(ef_memreg_free(&memreg, driver_handle));
  free(pkt_buf_mem);
  TRY(ef_vi_free(&vi, driver_handle));
  TRY(ef_pd_free(&pd, driver_handle));
  TRY(ef_driver_close(driver_handle));
}