Diff for /embedaddon/quagga/zebra/main.c between versions 1.1.1.2 and 1.1.1.4

version 1.1.1.2, 2012/10/09 09:22:29 version 1.1.1.4, 2016/11/02 10:09:10
Line 32 Line 32
 #include "plist.h"  #include "plist.h"
 #include "privs.h"  #include "privs.h"
 #include "sigevent.h"  #include "sigevent.h"
   #include "vrf.h"
   
 #include "zebra/rib.h"  #include "zebra/rib.h"
 #include "zebra/zserv.h"  #include "zebra/zserv.h"
Line 39 Line 40
 #include "zebra/router-id.h"  #include "zebra/router-id.h"
 #include "zebra/irdp.h"  #include "zebra/irdp.h"
 #include "zebra/rtadv.h"  #include "zebra/rtadv.h"
   #include "zebra/zebra_fpm.h"
   
 /* Zebra instance */  /* Zebra instance */
 struct zebra_t zebrad =  struct zebra_t zebrad =
Line 104  struct zebra_privs_t zserv_privs = Line 106  struct zebra_privs_t zserv_privs =
   .vty_group = VTY_GROUP,    .vty_group = VTY_GROUP,
 #endif  #endif
   .caps_p = _caps_p,    .caps_p = _caps_p,
  .cap_num_p = sizeof(_caps_p)/sizeof(_caps_p[0]),  .cap_num_p = array_size(_caps_p),
   .cap_num_i = 0    .cap_num_i = 0
 };  };
   
Line 150  usage (char *progname, int status) Line 152  usage (char *progname, int status)
   
   exit (status);    exit (status);
 }  }
 /* SIGHUP handler. */  /* SIGHUP handler. */
 static void   static void 
 sighup (void)  sighup (void)
Line 202  struct quagga_signal_t zebra_signals[] = Line 204  struct quagga_signal_t zebra_signals[] =
     .handler = &sigint,      .handler = &sigint,
   },    },
 };  };
 /* Callback upon creating a new VRF. */
 static int
 zebra_vrf_new (vrf_id_t vrf_id, void **info)
 {
   struct zebra_vrf *zvrf = *info;
 
   if (! zvrf)
     {
       zvrf = zebra_vrf_alloc (vrf_id);
       *info = (void *)zvrf;
       router_id_init (zvrf);
     }
 
   return 0;
 }
 
 /* Callback upon enabling a VRF. */
 static int
 zebra_vrf_enable (vrf_id_t vrf_id, void **info)
 {
   struct zebra_vrf *zvrf = (struct zebra_vrf *) (*info);
 
   assert (zvrf);
 
 #if defined (HAVE_RTADV)
   rtadv_init (zvrf);
 #endif
   kernel_init (zvrf);
   interface_list (zvrf);
   route_read (zvrf);
 
   return 0;
 }
 
 /* Callback upon disabling a VRF. */
 static int
 zebra_vrf_disable (vrf_id_t vrf_id, void **info)
 {
   struct zebra_vrf *zvrf = (struct zebra_vrf *) (*info);
   struct listnode *list_node;
   struct interface *ifp;
 
   assert (zvrf);
 
   rib_close_table (zvrf->table[AFI_IP][SAFI_UNICAST]);
   rib_close_table (zvrf->table[AFI_IP6][SAFI_UNICAST]);
 
   for (ALL_LIST_ELEMENTS_RO (vrf_iflist (vrf_id), list_node, ifp))
     {
       int operative = if_is_operative (ifp);
       UNSET_FLAG (ifp->flags, IFF_UP);
       if (operative)
         if_down (ifp);
     }
 
 #if defined (HAVE_RTADV)
   rtadv_terminate (zvrf);
 #endif
   kernel_terminate (zvrf);
 
   list_delete_all_node (zvrf->rid_all_sorted_list);
   list_delete_all_node (zvrf->rid_lo_sorted_list);
 
   return 0;
 }
 
 /* Zebra VRF initialization. */
 static void
 zebra_vrf_init (void)
 {
   vrf_add_hook (VRF_NEW_HOOK, zebra_vrf_new);
   vrf_add_hook (VRF_ENABLE_HOOK, zebra_vrf_enable);
   vrf_add_hook (VRF_DISABLE_HOOK, zebra_vrf_disable);
   vrf_init ();
 }
 
 /* Main startup routine. */  /* Main startup routine. */
 int  int
 main (int argc, char **argv)  main (int argc, char **argv)
Line 313  main (int argc, char **argv) Line 391  main (int argc, char **argv)
   zprivs_init (&zserv_privs);    zprivs_init (&zserv_privs);
   
   /* Vty related initialize. */    /* Vty related initialize. */
  signal_init (zebrad.master, Q_SIGC(zebra_signals), zebra_signals);  signal_init (zebrad.master, array_size(zebra_signals), zebra_signals);
   cmd_init (1);    cmd_init (1);
   vty_init (zebrad.master);    vty_init (zebrad.master);
   memory_init ();    memory_init ();
Line 323  main (int argc, char **argv) Line 401  main (int argc, char **argv)
   rib_init ();    rib_init ();
   zebra_if_init ();    zebra_if_init ();
   zebra_debug_init ();    zebra_debug_init ();
  router_id_init();  router_id_cmd_init ();
   zebra_vty_init ();    zebra_vty_init ();
   access_list_init ();    access_list_init ();
   prefix_list_init ();    prefix_list_init ();
  rtadv_init ();#if defined (HAVE_RTADV)
   rtadv_cmd_init ();
 #endif
 #ifdef HAVE_IRDP  #ifdef HAVE_IRDP
   irdp_init();    irdp_init();
 #endif  #endif
Line 335  main (int argc, char **argv) Line 415  main (int argc, char **argv)
   /* For debug purpose. */    /* For debug purpose. */
   /* SET_FLAG (zebra_debug_event, ZEBRA_DEBUG_EVENT); */    /* SET_FLAG (zebra_debug_event, ZEBRA_DEBUG_EVENT); */
   
  /* Make kernel routing socket. */  /* Initialize VRF module, and make kernel routing socket. */
  kernel_init ();  zebra_vrf_init ();
  interface_list (); 
  route_read (); 
   
   /* Sort VTY commands. */  
   sort_node ();  
   
 #ifdef HAVE_SNMP  #ifdef HAVE_SNMP
   zebra_snmp_init ();    zebra_snmp_init ();
 #endif /* HAVE_SNMP */  #endif /* HAVE_SNMP */
   
   #ifdef HAVE_FPM
     zfpm_init (zebrad.master, 1, 0);
   #else
     zfpm_init (zebrad.master, 0, 0);
   #endif
   
   /* Process the configuration file. Among other configuration    /* Process the configuration file. Among other configuration
   *  directives we can meet those installing static routes. Such    *  directives we can meet those installing static routes. Such

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>