]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_vrf.c
*: reindent
[mirror_frr.git] / zebra / zebra_vrf.c
index b5d6f8c06b002fd0f035786db23cb0d60b4875ec..feca13d3a2da4e2093e60f7a6a6ff25045622f56 100644 (file)
 extern struct zebra_t zebrad;
 
 /* VRF information update. */
-static void
-zebra_vrf_add_update (struct zebra_vrf *zvrf)
+static void zebra_vrf_add_update(struct zebra_vrf *zvrf)
 {
-  struct listnode *node, *nnode;
-  struct zserv *client;
+       struct listnode *node, *nnode;
+       struct zserv *client;
 
-  if (IS_ZEBRA_DEBUG_EVENT)
-    zlog_debug ("MESSAGE: ZEBRA_VRF_ADD %s", zvrf_name (zvrf));
+       if (IS_ZEBRA_DEBUG_EVENT)
+               zlog_debug("MESSAGE: ZEBRA_VRF_ADD %s", zvrf_name(zvrf));
 
-  for (ALL_LIST_ELEMENTS (zebrad.client_list, node, nnode, client))
-    zsend_vrf_add (client, zvrf);
+       for (ALL_LIST_ELEMENTS(zebrad.client_list, node, nnode, client))
+               zsend_vrf_add(client, zvrf);
 }
 
-static void
-zebra_vrf_delete_update (struct zebra_vrf *zvrf)
+static void zebra_vrf_delete_update(struct zebra_vrf *zvrf)
 {
-  struct listnode *node, *nnode;
-  struct zserv *client;
+       struct listnode *node, *nnode;
+       struct zserv *client;
 
-  if (IS_ZEBRA_DEBUG_EVENT)
-    zlog_debug ("MESSAGE: ZEBRA_VRF_DELETE %s", zvrf_name (zvrf));
+       if (IS_ZEBRA_DEBUG_EVENT)
+               zlog_debug("MESSAGE: ZEBRA_VRF_DELETE %s", zvrf_name(zvrf));
 
-  for (ALL_LIST_ELEMENTS (zebrad.client_list, node, nnode, client))
-    zsend_vrf_delete (client, zvrf);
+       for (ALL_LIST_ELEMENTS(zebrad.client_list, node, nnode, client))
+               zsend_vrf_delete(client, zvrf);
 }
 
-void
-zebra_vrf_update_all (struct zserv *client)
+void zebra_vrf_update_all(struct zserv *client)
 {
-  struct vrf *vrf;
+       struct vrf *vrf;
 
-  RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id)
-    {
-      if (vrf->vrf_id)
-        zsend_vrf_add (client, vrf_info_lookup (vrf->vrf_id));
-    }
+       RB_FOREACH(vrf, vrf_id_head, &vrfs_by_id)
+       {
+               if (vrf->vrf_id)
+                       zsend_vrf_add(client, vrf_info_lookup(vrf->vrf_id));
+       }
 }
 
 /* Callback upon creating a new VRF. */
-static int
-zebra_vrf_new (struct vrf *vrf)
+static int zebra_vrf_new(struct vrf *vrf)
 {
-  struct zebra_vrf *zvrf;
+       struct zebra_vrf *zvrf;
 
-  if (IS_ZEBRA_DEBUG_EVENT)
-    zlog_info ("ZVRF %s with id %u", vrf->name, vrf->vrf_id);
+       if (IS_ZEBRA_DEBUG_EVENT)
+               zlog_info("ZVRF %s with id %u", vrf->name, vrf->vrf_id);
 
-  zvrf = zebra_vrf_alloc ();
-  zvrf->zns = zebra_ns_lookup (NS_DEFAULT); /* Point to the global (single) NS */
-  router_id_init (zvrf);
-  vrf->info = zvrf;
-  zvrf->vrf = vrf;
+       zvrf = zebra_vrf_alloc();
+       zvrf->zns = zebra_ns_lookup(
+               NS_DEFAULT); /* Point to the global (single) NS */
+       router_id_init(zvrf);
+       vrf->info = zvrf;
+       zvrf->vrf = vrf;
 
-  return 0;
+       return 0;
 }
 
 /*
@@ -105,445 +102,430 @@ zebra_vrf_new (struct vrf *vrf)
  * the old ifindex and replace with new
  * ifindex to insert back into the table
  */
-void
-zebra_vrf_static_route_interface_fixup (struct interface *ifp)
+void zebra_vrf_static_route_interface_fixup(struct interface *ifp)
 {
-  afi_t afi;
-  safi_t safi;
-  struct zebra_vrf *zvrf = zebra_vrf_lookup_by_id (ifp->vrf_id);
-  struct route_table *stable = NULL;
-  struct route_node *rn = NULL;
-  struct static_route *si = NULL;
-
-  if (!zvrf)
-    return;
-
-  for (afi = AFI_IP; afi < AFI_MAX; afi++)
-    {
-      for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
-        {
-          stable = zvrf->stable[afi][safi];
-          if (stable)
-           for (rn = route_top (stable); rn; rn = route_next (rn))
-             {
-               if (rn->info)
-                 {
-                   si = rn->info;
-                   if ((strcmp (si->ifname, ifp->name) == 0) &&
-                       (si->ifindex != ifp->ifindex))
-                     {
-                       si->ifindex = ifp->ifindex;
-                       static_install_route (afi, safi, &rn->p, NULL, si);
-                     }   
-                 }
-             }
+       afi_t afi;
+       safi_t safi;
+       struct zebra_vrf *zvrf = zebra_vrf_lookup_by_id(ifp->vrf_id);
+       struct route_table *stable = NULL;
+       struct route_node *rn = NULL;
+       struct static_route *si = NULL;
+
+       if (!zvrf)
+               return;
+
+       for (afi = AFI_IP; afi < AFI_MAX; afi++) {
+               for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++) {
+                       stable = zvrf->stable[afi][safi];
+                       if (stable)
+                               for (rn = route_top(stable); rn;
+                                    rn = route_next(rn)) {
+                                       if (rn->info) {
+                                               si = rn->info;
+                                               if ((strcmp(si->ifname,
+                                                           ifp->name)
+                                                    == 0)
+                                                   && (si->ifindex
+                                                       != ifp->ifindex)) {
+                                                       si->ifindex =
+                                                               ifp->ifindex;
+                                                       static_install_route(
+                                                               afi, safi,
+                                                               &rn->p, NULL,
+                                                               si);
+                                               }
+                                       }
+                               }
+               }
        }
-    }
-  
 }
 
 /* Callback upon enabling a VRF. */
-static int
-zebra_vrf_enable (struct vrf *vrf)
+static int zebra_vrf_enable(struct vrf *vrf)
 {
-  struct zebra_vrf *zvrf = vrf->info;
-  struct route_table *stable;
-  struct route_node *rn;
-  struct static_route *si;
-  struct interface *ifp;
-  afi_t afi;
-  safi_t safi;
-
-  assert (zvrf);
-
-  zebra_vrf_add_update (zvrf);
-
-  for (afi = AFI_IP; afi < AFI_MAX; afi++)
-    for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
-      {
-       stable = zvrf->stable[afi][safi];
-       if (! stable)
-         continue;
-
-       for (rn = route_top (stable); rn; rn = route_next (rn))
-         for (si = rn->info; si; si = si->next)
-           {
-             si->vrf_id = vrf->vrf_id;
-             if (si->ifindex)
-               {
-                 ifp = if_lookup_by_name (si->ifname, si->vrf_id);
-                 if (ifp)
-                   si->ifindex = ifp->ifindex;
-                 else
-                   continue;
+       struct zebra_vrf *zvrf = vrf->info;
+       struct route_table *stable;
+       struct route_node *rn;
+       struct static_route *si;
+       struct interface *ifp;
+       afi_t afi;
+       safi_t safi;
+
+       assert(zvrf);
+
+       zebra_vrf_add_update(zvrf);
+
+       for (afi = AFI_IP; afi < AFI_MAX; afi++)
+               for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++) {
+                       stable = zvrf->stable[afi][safi];
+                       if (!stable)
+                               continue;
+
+                       for (rn = route_top(stable); rn; rn = route_next(rn))
+                               for (si = rn->info; si; si = si->next) {
+                                       si->vrf_id = vrf->vrf_id;
+                                       if (si->ifindex) {
+                                               ifp = if_lookup_by_name(
+                                                       si->ifname, si->vrf_id);
+                                               if (ifp)
+                                                       si->ifindex =
+                                                               ifp->ifindex;
+                                               else
+                                                       continue;
+                                       }
+                                       static_install_route(afi, safi, &rn->p,
+                                                            NULL, si);
+                               }
                }
-             static_install_route (afi, safi, &rn->p, NULL, si);
-           }
-      }
 
-  return 0;
+       return 0;
 }
 
 /* Callback upon disabling a VRF. */
-static int
-zebra_vrf_disable (struct vrf *vrf)
+static int zebra_vrf_disable(struct vrf *vrf)
 {
-  struct zebra_vrf *zvrf = vrf->info;
-  struct route_table *stable;
-  struct route_node *rn;
-  struct static_route *si;
-  afi_t afi;
-  safi_t safi;
-
-  if (IS_ZEBRA_DEBUG_KERNEL)
-    zlog_debug ("VRF %s id %u is now disabled.",
-                zvrf_name (zvrf), zvrf_id (zvrf));
-
-  for (afi = AFI_IP; afi < AFI_MAX; afi++)
-    for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
-      {
-       stable = zvrf->stable[afi][safi];
-       if (! stable)
-         continue;
-
-       for (rn = route_top (stable); rn; rn = route_next (rn))
-         for (si = rn->info; si; si = si->next)
-           static_uninstall_route(afi, safi, &rn->p, NULL, si);
-      }
-
-  return 0;
+       struct zebra_vrf *zvrf = vrf->info;
+       struct route_table *stable;
+       struct route_node *rn;
+       struct static_route *si;
+       afi_t afi;
+       safi_t safi;
+
+       if (IS_ZEBRA_DEBUG_KERNEL)
+               zlog_debug("VRF %s id %u is now disabled.", zvrf_name(zvrf),
+                          zvrf_id(zvrf));
+
+       for (afi = AFI_IP; afi < AFI_MAX; afi++)
+               for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++) {
+                       stable = zvrf->stable[afi][safi];
+                       if (!stable)
+                               continue;
+
+                       for (rn = route_top(stable); rn; rn = route_next(rn))
+                               for (si = rn->info; si; si = si->next)
+                                       static_uninstall_route(
+                                               afi, safi, &rn->p, NULL, si);
+               }
+
+       return 0;
 }
 
-static int
-zebra_vrf_delete (struct vrf *vrf)
+static int zebra_vrf_delete(struct vrf *vrf)
 {
-  struct zebra_vrf *zvrf = vrf->info;
-  struct route_table *table;
-  u_int32_t table_id;
-  afi_t afi;
-  safi_t safi;
-  unsigned i;
-
-  assert (zvrf);
-
-  zebra_vrf_delete_update (zvrf);
+       struct zebra_vrf *zvrf = vrf->info;
+       struct route_table *table;
+       u_int32_t table_id;
+       afi_t afi;
+       safi_t safi;
+       unsigned i;
+
+       assert(zvrf);
+
+       zebra_vrf_delete_update(zvrf);
+
+       /* uninstall everything */
+       if (!CHECK_FLAG(zvrf->flags, ZEBRA_VRF_RETAIN)) {
+               struct listnode *node;
+               struct interface *ifp;
+
+               for (afi = AFI_IP; afi <= AFI_IP6; afi++) {
+                       for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST;
+                            safi++)
+                               rib_close_table(zvrf->table[afi][safi]);
+
+                       if (vrf->vrf_id == VRF_DEFAULT)
+                               for (table_id = 0;
+                                    table_id < ZEBRA_KERNEL_TABLE_MAX;
+                                    table_id++)
+                                       if (zvrf->other_table[afi][table_id])
+                                               rib_close_table(
+                                                       zvrf->other_table
+                                                               [afi]
+                                                               [table_id]);
+               }
 
-  /* uninstall everything */
-  if (! CHECK_FLAG (zvrf->flags, ZEBRA_VRF_RETAIN))
-    {
-      struct listnode *node;
-      struct interface *ifp;
+               /* Cleanup Vxlan table and update kernel */
+               zebra_vxlan_close_tables(zvrf);
 
-      for (afi = AFI_IP; afi <= AFI_IP6; afi++)
-       {
-         for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++)
-           rib_close_table (zvrf->table[afi][safi]);
+               zebra_mpls_close_tables(zvrf);
 
-         if (vrf->vrf_id == VRF_DEFAULT)
-           for (table_id = 0; table_id < ZEBRA_KERNEL_TABLE_MAX; table_id++)
-             if (zvrf->other_table[afi][table_id])
-               rib_close_table (zvrf->other_table[afi][table_id]);
+               for (ALL_LIST_ELEMENTS_RO(vrf->iflist, node, ifp))
+                       if_nbr_ipv6ll_to_ipv4ll_neigh_del_all(ifp);
        }
 
-      /* Cleanup Vxlan table and update kernel */
-      zebra_vxlan_close_tables (zvrf);
-
-      zebra_mpls_close_tables (zvrf);
-
-      for (ALL_LIST_ELEMENTS_RO (vrf->iflist, node, ifp))
-       if_nbr_ipv6ll_to_ipv4ll_neigh_del_all (ifp);
-    }
-
-  /* clean-up work queues */
-  for (i = 0; i < MQ_SIZE; i++)
-    {
-      struct listnode *lnode, *nnode;
-      struct route_node *rnode;
-      rib_dest_t *dest;
-
-      for (ALL_LIST_ELEMENTS (zebrad.mq->subq[i], lnode, nnode, rnode))
-       {
-         dest = rib_dest_from_rnode (rnode);
-         if (dest && rib_dest_vrf (dest) == zvrf)
-           {
-             route_unlock_node (rnode);
-             list_delete_node (zebrad.mq->subq[i], lnode);
-             zebrad.mq->size--;
-           }
+       /* clean-up work queues */
+       for (i = 0; i < MQ_SIZE; i++) {
+               struct listnode *lnode, *nnode;
+               struct route_node *rnode;
+               rib_dest_t *dest;
+
+               for (ALL_LIST_ELEMENTS(zebrad.mq->subq[i], lnode, nnode,
+                                      rnode)) {
+                       dest = rib_dest_from_rnode(rnode);
+                       if (dest && rib_dest_vrf(dest) == zvrf) {
+                               route_unlock_node(rnode);
+                               list_delete_node(zebrad.mq->subq[i], lnode);
+                               zebrad.mq->size--;
+                       }
+               }
        }
-    }
 
-  /* release allocated memory */
-  for (afi = AFI_IP; afi <= AFI_IP6; afi++)
-    {
-      void *table_info;
+       /* release allocated memory */
+       for (afi = AFI_IP; afi <= AFI_IP6; afi++) {
+               void *table_info;
 
-      for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++)
-       {
-         table = zvrf->table[afi][safi];
-         table_info = table->info;
-         route_table_finish (table);
-         XFREE (MTYPE_RIB_TABLE_INFO, table_info);
+               for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++) {
+                       table = zvrf->table[afi][safi];
+                       table_info = table->info;
+                       route_table_finish(table);
+                       XFREE(MTYPE_RIB_TABLE_INFO, table_info);
+
+                       table = zvrf->stable[afi][safi];
+                       route_table_finish(table);
+               }
 
-         table = zvrf->stable[afi][safi];
-         route_table_finish (table);
+               for (table_id = 0; table_id < ZEBRA_KERNEL_TABLE_MAX;
+                    table_id++)
+                       if (zvrf->other_table[afi][table_id]) {
+                               table = zvrf->other_table[afi][table_id];
+                               table_info = table->info;
+                               route_table_finish(table);
+                               XFREE(MTYPE_RIB_TABLE_INFO, table_info);
+                       }
+
+               route_table_finish(zvrf->rnh_table[afi]);
+               route_table_finish(zvrf->import_check_table[afi]);
        }
+       list_delete_all_node(zvrf->rid_all_sorted_list);
+       list_delete_all_node(zvrf->rid_lo_sorted_list);
+       XFREE(MTYPE_ZEBRA_VRF, zvrf);
+       vrf->info = NULL;
 
-      for (table_id = 0; table_id < ZEBRA_KERNEL_TABLE_MAX; table_id++)
-       if (zvrf->other_table[afi][table_id])
-         {
-           table = zvrf->other_table[afi][table_id];
-           table_info = table->info;
-           route_table_finish (table);
-           XFREE (MTYPE_RIB_TABLE_INFO, table_info);
-         }
-
-      route_table_finish (zvrf->rnh_table[afi]);
-      route_table_finish (zvrf->import_check_table[afi]);
-    }
-  list_delete_all_node (zvrf->rid_all_sorted_list);
-  list_delete_all_node (zvrf->rid_lo_sorted_list);
-  XFREE (MTYPE_ZEBRA_VRF, zvrf);
-  vrf->info = NULL;
-
-  return 0;
+       return 0;
 }
 
 /* Lookup the routing table in a VRF based on both VRF-Id and table-id.
  * NOTE: Table-id is relevant only in the Default VRF.
  */
-struct route_table *
-zebra_vrf_table_with_table_id (afi_t afi, safi_t safi,
-                               vrf_id_t vrf_id, u_int32_t table_id)
+struct route_table *zebra_vrf_table_with_table_id(afi_t afi, safi_t safi,
+                                                 vrf_id_t vrf_id,
+                                                 u_int32_t table_id)
 {
-  struct route_table *table = NULL;
-
-  if (afi >= AFI_MAX || safi >= SAFI_MAX)
-    return NULL;
-
-  if (vrf_id == VRF_DEFAULT)
-    {
-      if (table_id == RT_TABLE_MAIN ||
-          table_id == zebrad.rtm_table_default)
-        table = zebra_vrf_table (afi, safi, vrf_id);
-      else
-        table = zebra_vrf_other_route_table (afi, table_id, vrf_id);
-    }
-  else
-      table = zebra_vrf_table (afi, safi, vrf_id);
-
-  return table;
+       struct route_table *table = NULL;
+
+       if (afi >= AFI_MAX || safi >= SAFI_MAX)
+               return NULL;
+
+       if (vrf_id == VRF_DEFAULT) {
+               if (table_id == RT_TABLE_MAIN
+                   || table_id == zebrad.rtm_table_default)
+                       table = zebra_vrf_table(afi, safi, vrf_id);
+               else
+                       table = zebra_vrf_other_route_table(afi, table_id,
+                                                           vrf_id);
+       } else
+               table = zebra_vrf_table(afi, safi, vrf_id);
+
+       return table;
 }
 
-static void
-zebra_rtable_node_cleanup (struct route_table *table, struct route_node *node)
+static void zebra_rtable_node_cleanup(struct route_table *table,
+                                     struct route_node *node)
 {
-  struct route_entry *re, *next;
+       struct route_entry *re, *next;
 
-  RNODE_FOREACH_RE_SAFE (node, re, next)
-    rib_unlink (node, re);
+       RNODE_FOREACH_RE_SAFE(node, re, next)
+       rib_unlink(node, re);
 
-  if (node->info)
-    XFREE (MTYPE_RIB_DEST, node->info);
+       if (node->info)
+               XFREE(MTYPE_RIB_DEST, node->info);
 }
 
-static void
-zebra_stable_node_cleanup (struct route_table *table, struct route_node *node)
+static void zebra_stable_node_cleanup(struct route_table *table,
+                                     struct route_node *node)
 {
-  struct static_route *si, *next;
-
-  if (node->info)
-    for (si = node->info; si; si = next)
-      {
-       next = si->next;
-       XFREE (MTYPE_STATIC_ROUTE, si);
-      }
+       struct static_route *si, *next;
+
+       if (node->info)
+               for (si = node->info; si; si = next) {
+                       next = si->next;
+                       XFREE(MTYPE_STATIC_ROUTE, si);
+               }
 }
 
-static void
-zebra_rnhtable_node_cleanup (struct route_table *table, struct route_node *node)
+static void zebra_rnhtable_node_cleanup(struct route_table *table,
+                                       struct route_node *node)
 {
-  if (node->info)
-    zebra_free_rnh (node->info);
+       if (node->info)
+               zebra_free_rnh(node->info);
 }
 
 /*
  * Create a routing table for the specific AFI/SAFI in the given VRF.
  */
-static void
-zebra_vrf_table_create (struct zebra_vrf *zvrf, afi_t afi, safi_t safi)
+static void zebra_vrf_table_create(struct zebra_vrf *zvrf, afi_t afi,
+                                  safi_t safi)
 {
-  rib_table_info_t *info;
-  struct route_table *table;
-
-  assert (!zvrf->table[afi][safi]);
-
-  if (afi == AFI_IP6)
-    table = srcdest_table_init();
-  else
-    table = route_table_init();
-  table->cleanup = zebra_rtable_node_cleanup;
-  zvrf->table[afi][safi] = table;
-
-  info = XCALLOC (MTYPE_RIB_TABLE_INFO, sizeof (*info));
-  info->zvrf = zvrf;
-  info->afi = afi;
-  info->safi = safi;
-  table->info = info;
+       rib_table_info_t *info;
+       struct route_table *table;
+
+       assert(!zvrf->table[afi][safi]);
+
+       if (afi == AFI_IP6)
+               table = srcdest_table_init();
+       else
+               table = route_table_init();
+       table->cleanup = zebra_rtable_node_cleanup;
+       zvrf->table[afi][safi] = table;
+
+       info = XCALLOC(MTYPE_RIB_TABLE_INFO, sizeof(*info));
+       info->zvrf = zvrf;
+       info->afi = afi;
+       info->safi = safi;
+       table->info = info;
 }
 
 /* Allocate new zebra VRF. */
-struct zebra_vrf *
-zebra_vrf_alloc (void)
+struct zebra_vrf *zebra_vrf_alloc(void)
 {
-  struct zebra_vrf *zvrf;
-  afi_t afi;
-  safi_t safi;
-  struct route_table *table;
-
-  zvrf = XCALLOC (MTYPE_ZEBRA_VRF, sizeof (struct zebra_vrf));
-
-  for (afi = AFI_IP; afi <= AFI_IP6; afi++)
-    {
-      for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++)
-        {
-          zebra_vrf_table_create (zvrf, afi, safi);
-          if (afi == AFI_IP6)
-            table = srcdest_table_init();
-          else
-            table = route_table_init();
-          table->cleanup = zebra_stable_node_cleanup;
-          zvrf->stable[afi][safi] = table;
-        }
-
-      table = route_table_init();
-      table->cleanup = zebra_rnhtable_node_cleanup;
-      zvrf->rnh_table[afi] = table;
-
-      table = route_table_init();
-      table->cleanup = zebra_rnhtable_node_cleanup;
-      zvrf->import_check_table[afi] = table;
-    }
-
-  zebra_vxlan_init_tables (zvrf);
-  zebra_mpls_init_tables (zvrf);
-
-  return zvrf;
+       struct zebra_vrf *zvrf;
+       afi_t afi;
+       safi_t safi;
+       struct route_table *table;
+
+       zvrf = XCALLOC(MTYPE_ZEBRA_VRF, sizeof(struct zebra_vrf));
+
+       for (afi = AFI_IP; afi <= AFI_IP6; afi++) {
+               for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++) {
+                       zebra_vrf_table_create(zvrf, afi, safi);
+                       if (afi == AFI_IP6)
+                               table = srcdest_table_init();
+                       else
+                               table = route_table_init();
+                       table->cleanup = zebra_stable_node_cleanup;
+                       zvrf->stable[afi][safi] = table;
+               }
+
+               table = route_table_init();
+               table->cleanup = zebra_rnhtable_node_cleanup;
+               zvrf->rnh_table[afi] = table;
+
+               table = route_table_init();
+               table->cleanup = zebra_rnhtable_node_cleanup;
+               zvrf->import_check_table[afi] = table;
+       }
+
+       zebra_vxlan_init_tables(zvrf);
+       zebra_mpls_init_tables(zvrf);
+
+       return zvrf;
 }
 
 /* Lookup VRF by identifier.  */
-struct zebra_vrf *
-zebra_vrf_lookup_by_id (vrf_id_t vrf_id)
+struct zebra_vrf *zebra_vrf_lookup_by_id(vrf_id_t vrf_id)
 {
-  return vrf_info_lookup (vrf_id);
+       return vrf_info_lookup(vrf_id);
 }
 
 /* Lookup VRF by name.  */
-struct zebra_vrf *
-zebra_vrf_lookup_by_name (const char *name)
+struct zebra_vrf *zebra_vrf_lookup_by_name(const char *name)
 {
-  struct vrf *vrf;
+       struct vrf *vrf;
 
-  if (!name)
-    name = VRF_DEFAULT_NAME;
+       if (!name)
+               name = VRF_DEFAULT_NAME;
 
-  vrf = vrf_lookup_by_name (name);
-  if (vrf)
-    return ((struct zebra_vrf *) vrf->info);
+       vrf = vrf_lookup_by_name(name);
+       if (vrf)
+               return ((struct zebra_vrf *)vrf->info);
 
-  return NULL;
+       return NULL;
 }
 
 /* Lookup the routing table in an enabled VRF. */
-struct route_table *
-zebra_vrf_table (afi_t afi, safi_t safi, vrf_id_t vrf_id)
+struct route_table *zebra_vrf_table(afi_t afi, safi_t safi, vrf_id_t vrf_id)
 {
-  struct zebra_vrf *zvrf = vrf_info_lookup (vrf_id);
+       struct zebra_vrf *zvrf = vrf_info_lookup(vrf_id);
 
-  if (!zvrf)
-    return NULL;
+       if (!zvrf)
+               return NULL;
 
-  if (afi >= AFI_MAX || safi >= SAFI_MAX)
-    return NULL;
+       if (afi >= AFI_MAX || safi >= SAFI_MAX)
+               return NULL;
 
-  return zvrf->table[afi][safi];
+       return zvrf->table[afi][safi];
 }
 
 /* Lookup the static routing table in a VRF. */
-struct route_table *
-zebra_vrf_static_table (afi_t afi, safi_t safi, struct zebra_vrf *zvrf)
+struct route_table *zebra_vrf_static_table(afi_t afi, safi_t safi,
+                                          struct zebra_vrf *zvrf)
 {
-  if (!zvrf)
-    return NULL;
+       if (!zvrf)
+               return NULL;
 
-  if (afi >= AFI_MAX || safi >= SAFI_MAX)
-    return NULL;
+       if (afi >= AFI_MAX || safi >= SAFI_MAX)
+               return NULL;
 
-  return zvrf->stable[afi][safi];
+       return zvrf->stable[afi][safi];
 }
 
-struct route_table *
-zebra_vrf_other_route_table (afi_t afi, u_int32_t table_id, vrf_id_t vrf_id)
+struct route_table *zebra_vrf_other_route_table(afi_t afi, u_int32_t table_id,
+                                               vrf_id_t vrf_id)
 {
-  struct zebra_vrf *zvrf;
-  rib_table_info_t *info;
-  struct route_table *table;
-
-  zvrf = vrf_info_lookup (vrf_id);
-  if (! zvrf)
-    return NULL;
-
-  if(afi >= AFI_MAX)
-    return NULL;
-
-  if (table_id >= ZEBRA_KERNEL_TABLE_MAX)
-    return NULL;
-
-  if ((vrf_id == VRF_DEFAULT) && (table_id != RT_TABLE_MAIN) && (table_id != zebrad.rtm_table_default))
-    {
-      if (zvrf->other_table[afi][table_id] == NULL)
-        {
-          table = (afi == AFI_IP6) ? srcdest_table_init() : route_table_init();
-          info = XCALLOC (MTYPE_RIB_TABLE_INFO, sizeof (*info));
-          info->zvrf = zvrf;
-          info->afi = afi;
-          info->safi = SAFI_UNICAST;
-          table->info = info;
-          zvrf->other_table[afi][table_id] = table;
-        }
-
-      return (zvrf->other_table[afi][table_id]);
-    }
-
-  return zvrf->table[afi][SAFI_UNICAST];
+       struct zebra_vrf *zvrf;
+       rib_table_info_t *info;
+       struct route_table *table;
+
+       zvrf = vrf_info_lookup(vrf_id);
+       if (!zvrf)
+               return NULL;
+
+       if (afi >= AFI_MAX)
+               return NULL;
+
+       if (table_id >= ZEBRA_KERNEL_TABLE_MAX)
+               return NULL;
+
+       if ((vrf_id == VRF_DEFAULT) && (table_id != RT_TABLE_MAIN)
+           && (table_id != zebrad.rtm_table_default)) {
+               if (zvrf->other_table[afi][table_id] == NULL) {
+                       table = (afi == AFI_IP6) ? srcdest_table_init()
+                                                : route_table_init();
+                       info = XCALLOC(MTYPE_RIB_TABLE_INFO, sizeof(*info));
+                       info->zvrf = zvrf;
+                       info->afi = afi;
+                       info->safi = SAFI_UNICAST;
+                       table->info = info;
+                       zvrf->other_table[afi][table_id] = table;
+               }
+
+               return (zvrf->other_table[afi][table_id]);
+       }
+
+       return zvrf->table[afi][SAFI_UNICAST];
 }
 
-static int
-vrf_config_write (struct vty *vty)
+static int vrf_config_write(struct vty *vty)
 {
-  struct vrf *vrf;
-  struct zebra_vrf *zvrf;
-
-  RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name)
-    {
-      zvrf = vrf->info;
-      if (! zvrf || strcmp (zvrf_name (zvrf), VRF_DEFAULT_NAME))
-        {
-          vty_out (vty, "vrf %s\n", zvrf_name(zvrf));
-          vty_out (vty, "!\n");
-        }
-    }
-  return 0;
+       struct vrf *vrf;
+       struct zebra_vrf *zvrf;
+
+       RB_FOREACH(vrf, vrf_name_head, &vrfs_by_name)
+       {
+               zvrf = vrf->info;
+               if (!zvrf || strcmp(zvrf_name(zvrf), VRF_DEFAULT_NAME)) {
+                       vty_out(vty, "vrf %s\n", zvrf_name(zvrf));
+                       vty_out(vty, "!\n");
+               }
+       }
+       return 0;
 }
 
 /* Zebra VRF initialization. */
-void
-zebra_vrf_init (void)
+void zebra_vrf_init(void)
 {
-  vrf_init (zebra_vrf_new,
-           zebra_vrf_enable,
-           zebra_vrf_disable,
-           zebra_vrf_delete);
+       vrf_init(zebra_vrf_new, zebra_vrf_enable, zebra_vrf_disable,
+                zebra_vrf_delete);
 
-  vrf_cmd_init (vrf_config_write);
+       vrf_cmd_init(vrf_config_write);
 }