File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / zebra / zserv.h
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:10 2016 UTC (7 years, 8 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    1: /* Zebra daemon server header.
    2:  * Copyright (C) 1997, 98 Kunihiro Ishiguro
    3:  *
    4:  * This file is part of GNU Zebra.
    5:  *
    6:  * GNU Zebra is free software; you can redistribute it and/or modify it
    7:  * under the terms of the GNU General Public License as published by the
    8:  * Free Software Foundation; either version 2, or (at your option) any
    9:  * later version.
   10:  *
   11:  * GNU Zebra is distributed in the hope that it will be useful, but
   12:  * WITHOUT ANY WARRANTY; without even the implied warranty of
   13:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14:  * General Public License for more details.
   15:  *
   16:  * You should have received a copy of the GNU General Public License
   17:  * along with GNU Zebra; see the file COPYING.  If not, write to the Free
   18:  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
   19:  * 02111-1307, USA.  
   20:  */
   21: 
   22: #ifndef _ZEBRA_ZSERV_H
   23: #define _ZEBRA_ZSERV_H
   24: 
   25: #include "rib.h"
   26: #include "if.h"
   27: #include "workqueue.h"
   28: #include "vrf.h"
   29: 
   30: /* Default port information. */
   31: #define ZEBRA_VTY_PORT                2601
   32: 
   33: /* Default configuration filename. */
   34: #define DEFAULT_CONFIG_FILE "zebra.conf"
   35: 
   36: /* Client structure. */
   37: struct zserv
   38: {
   39:   /* Client file descriptor. */
   40:   int sock;
   41: 
   42:   /* Input/output buffer to the client. */
   43:   struct stream *ibuf;
   44:   struct stream *obuf;
   45: 
   46:   /* Buffer of data waiting to be written to client. */
   47:   struct buffer *wb;
   48: 
   49:   /* Threads for read/write. */
   50:   struct thread *t_read;
   51:   struct thread *t_write;
   52: 
   53:   /* Thread for delayed close. */
   54:   struct thread *t_suicide;
   55: 
   56:   /* default routing table this client munges */
   57:   int rtm_table;
   58: 
   59:   /* This client's redistribute flag. */
   60:   vrf_bitmap_t redist[ZEBRA_ROUTE_MAX];
   61: 
   62:   /* Redistribute default route flag. */
   63:   vrf_bitmap_t redist_default;
   64: 
   65:   /* Interface information. */
   66:   vrf_bitmap_t ifinfo;
   67: 
   68:   /* Router-id information. */
   69:   vrf_bitmap_t ridinfo;
   70: };
   71: 
   72: /* Zebra instance */
   73: struct zebra_t
   74: {
   75:   /* Thread master */
   76:   struct thread_master *master;
   77:   struct list *client_list;
   78: 
   79:   /* default table */
   80:   int rtm_table_default;
   81: 
   82:   /* rib work queue */
   83:   struct work_queue *ribq;
   84:   struct meta_queue *mq;
   85: };
   86: 
   87: /* Count prefix size from mask length */
   88: #define PSIZE(a) (((a) + 7) / (8))
   89: 
   90: /* Prototypes. */
   91: extern void zebra_init (void);
   92: extern void zebra_if_init (void);
   93: extern void zebra_zserv_socket_init (char *path);
   94: extern void hostinfo_get (void);
   95: extern void rib_init (void);
   96: extern void interface_list (struct zebra_vrf *);
   97: extern void route_read (struct zebra_vrf *);
   98: extern void kernel_init (struct zebra_vrf *);
   99: extern void kernel_terminate (struct zebra_vrf *);
  100: extern void zebra_route_map_init (void);
  101: extern void zebra_snmp_init (void);
  102: extern void zebra_vty_init (void);
  103: 
  104: extern int zsend_interface_add (struct zserv *, struct interface *);
  105: extern int zsend_interface_delete (struct zserv *, struct interface *);
  106: extern int zsend_interface_address (int, struct zserv *, struct interface *,
  107:                                     struct connected *);
  108: extern int zsend_interface_update (int, struct zserv *, struct interface *);
  109: extern int zsend_route_multipath (int, struct zserv *, struct prefix *, 
  110:                                   struct rib *);
  111: extern int zsend_router_id_update (struct zserv *, struct prefix *,
  112:                                    vrf_id_t);
  113: 
  114: extern pid_t pid;
  115: 
  116: #endif /* _ZEBRA_ZEBRA_H */

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