Beispiel #1
0
Datei: init.c Projekt: chrisy/vpp
static clib_error_t *
ethernet_init (vlib_main_t * vm)
{
  ethernet_main_t *em = &ethernet_main;
  clib_error_t *error;

  /*
   * Set up the L2 path now, or we'll wipe out the L2 ARP
   * registration set up by ethernet_arp_init.
   */
  if ((error = vlib_call_init_function (vm, l2_init)))
    return error;

  em->vlib_main = vm;

  em->type_info_by_name = hash_create_string (0, sizeof (uword));
  em->type_info_by_type = hash_create (0, sizeof (uword));

#define ethernet_type(n,s) add_type (em, ETHERNET_TYPE_##s, #s);
#include "types.def"
#undef ethernet_type

  if ((error = vlib_call_init_function (vm, llc_init)))
    return error;
  if ((error = vlib_call_init_function (vm, ethernet_input_init)))
    return error;
  if ((error = vlib_call_init_function (vm, vnet_feature_init)))
    return error;

  return 0;
}
Beispiel #2
0
static clib_error_t *
unix_main_init (vlib_main_t * vm)
{
  unix_main_t *um = &unix_main;
  um->vlib_main = vm;
  return vlib_call_init_function (vm, unix_input_init);
}
Beispiel #3
0
static clib_error_t * ethernet_init (vlib_main_t * vm)
{
  ethernet_main_t * em = &ethernet_main;
  clib_error_t * error;

  em->vlib_main = vm;

  em->type_info_by_name = hash_create_string (0, sizeof (uword));
  em->type_info_by_type = hash_create (0, sizeof (uword));

#define ethernet_type(n,s) add_type (em, ETHERNET_TYPE_##s, #s);
#include "types.def"
#undef ethernet_type

  if ((error = vlib_call_init_function (vm, llc_init)))
    return error;
  if ((error = vlib_call_init_function (vm, ethernet_input_init)))
    return error;
  if ((error = vlib_call_init_function (vm, ethernet_cli_init)))
    return error;  

  return error;
}
Beispiel #4
0
static clib_error_t *
udp_init (vlib_main_t * vm)
{
  ip_main_t * im = &ip_main;
  ip_protocol_info_t * pi;
  clib_error_t * error;

  error = vlib_call_init_function (vm, ip_main_init);

  if (! error)
    {
      pi = ip_get_protocol_info (im, IP_PROTOCOL_UDP);
      pi->format_header = format_udp_header;
      pi->unformat_pg_edit = unformat_pg_udp_header;
    }

  return 0;
}
Beispiel #5
0
Datei: misc.c Projekt: chrisy/vpp
clib_error_t *
vnet_main_init (vlib_main_t * vm)
{
  vnet_main_t *vnm = vnet_get_main ();
  clib_error_t *error;
  u32 hw_if_index;
  vnet_hw_interface_t *hw;

  if ((error = vlib_call_init_function (vm, vnet_interface_init)))
    return error;

  if ((error = vlib_call_init_function (vm, fib_module_init)))
    return error;

  if ((error = vlib_call_init_function (vm, mfib_module_init)))
    return error;

  if ((error = vlib_call_init_function (vm, ip_main_init)))
    return error;

  if ((error = vlib_call_init_function (vm, ip4_lookup_init)))
    return error;

  if ((error = vlib_call_init_function (vm, ip6_lookup_init)))
    return error;

  if ((error = vlib_call_init_function (vm, mpls_init)))
    return error;

  vnm->vlib_main = vm;

  hw_if_index = vnet_register_interface
    (vnm, vnet_local_interface_device_class.index, /* instance */ 0,
     vnet_local_interface_hw_class.index, /* instance */ 0);
  hw = vnet_get_hw_interface (vnm, hw_if_index);

  vnm->local_interface_hw_if_index = hw_if_index;
  vnm->local_interface_sw_if_index = hw->sw_if_index;

  /* the local interface is used as an input interface when decapping from
   * an IPSEC tunnel. so it needs to be IP enabled */
  ip4_sw_interface_enable_disable (hw->sw_if_index, 1);
  ip6_sw_interface_enable_disable (hw->sw_if_index, 1);

  return 0;
}
Beispiel #6
0
clib_error_t *
vnet_main_init (vlib_main_t * vm)
{
  vnet_main_t * vnm = vnet_get_main();
  clib_error_t * error;
  u32 hw_if_index;
  vnet_hw_interface_t * hw;

  if ((error = vlib_call_init_function (vm, vnet_interface_init)))
    return error;

  vnm->vlib_main = vm;

  hw_if_index = vnet_register_interface
    (vnm,
     vnet_local_interface_device_class.index, /* instance */ 0,
     vnet_local_interface_hw_class.index, /* instance */ 0);
  hw = vnet_get_hw_interface (vnm, hw_if_index);

  vnm->local_interface_hw_if_index = hw_if_index;
  vnm->local_interface_sw_if_index = hw->sw_if_index;

  return 0;
}
Beispiel #7
0
clib_error_t *
ip_main_init (vlib_main_t * vm)
{
  ip_main_t * im = &ip_main;
  clib_error_t * error = 0;

  memset (im, 0, sizeof (im[0]));

  {
    ip_protocol_info_t * pi;
    u32 i;

#define ip_protocol(n,s)			\
do {						\
  vec_add2 (im->protocol_infos, pi, 1);		\
  pi->protocol = n;				\
  pi->name = (u8 *) #s;				\
} while (0);

#include "protocols.def"

#undef ip_protocol

    im->protocol_info_by_name = hash_create_string (0, sizeof (uword));
    for (i = 0; i < vec_len (im->protocol_infos); i++)
      {
	pi = im->protocol_infos + i;

	hash_set_mem (im->protocol_info_by_name, pi->name, i);
	hash_set (im->protocol_info_by_protocol, pi->protocol, i);
      }
  }

  {
    tcp_udp_port_info_t * pi;
    u32 i;
    static char * port_names[] = 
      {
#define ip_port(s,n) #s,
#include "ports.def"
#undef ip_port
      };
    static u16 ports[] = 
      {
#define ip_port(s,n) n,
#include "ports.def"
#undef ip_port
      };

    vec_resize (im->port_infos, ARRAY_LEN (port_names));
    im->port_info_by_name = hash_create_string (0, sizeof (uword));

    for (i = 0; i < vec_len (im->port_infos); i++)
      {
	pi = im->port_infos + i;
	pi->port = clib_host_to_net_u16 (ports[i]);
	pi->name = (u8 *) port_names[i];
	hash_set_mem (im->port_info_by_name, pi->name, i);
	hash_set (im->port_info_by_port, pi->port, i);
      }
  }

  if ((error = vlib_call_init_function (vm, vnet_main_init)))
    return error;

  if ((error = vlib_call_init_function (vm, ip4_init)))
    return error;

  if ((error = vlib_call_init_function (vm, ip6_init)))
    return error;

  if ((error = vlib_call_init_function (vm, icmp4_init)))
    return error;

  if ((error = vlib_call_init_function (vm, icmp6_init)))
    return error;

  if ((error = vlib_call_init_function (vm, ip6_hop_by_hop_init)))
    return error;

  if ((error = vlib_call_init_function (vm, udp_local_init)))
    return error;

  if ((error = vlib_call_init_function (vm, udp_init)))
    return error;

  if ((error = vlib_call_init_function (vm, ip_classify_init)))
    return error;

  if ((error = vlib_call_init_function (vm, input_acl_init)))
    return error;

  return error;
}
Beispiel #8
0
ethernet_main_t * ethernet_get_main (vlib_main_t * vm)
{
  vlib_call_init_function (vm, ethernet_init);
  return &ethernet_main;
}