File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / doc / protocol.texi
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:26:11 2012 UTC (12 years, 4 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, v0_99_22p0, v0_99_22, v0_99_21, v0_99_20_1, v0_99_20, HEAD
quagga

    1: @node  Zebra Protocol
    2: @appendix Zebra Protocol
    3: @appendixsection Overview of the Zebra Protocol
    4: 
    5: Zebra Protocol is used by protocol daemons to communicate with the
    6: zebra daemon.
    7: 
    8: Each protocol daemon may request and send information to and from the
    9: zebra daemon such as interface states, routing state,
   10: nexthop-validation, and so on. Protocol daemons may also install routes
   11: with zebra. The zebra daemon manages which route is installed into the
   12: forwarding table with the kernel.
   13: 
   14: Zebra Protocol is a streaming protocol, with a common header. Two
   15: versions of the header are in use. Version 0 is implicitely versioned.
   16: Version 1 has an explicit version field. Version 0 can be distinguished
   17: from all other versions by examining the 3rd byte of the header, which
   18: contains a marker value for all versions bar version 0. The marker byte
   19: corresponds to the command field in version 0, and the marker value is
   20: a reserved command in version 0.
   21: 
   22: We do not anticipate there will be further versions of the header for
   23: the foreseeable future, as the command field in version 1 is wide
   24: enough to allow for future extensions to done compatibly through
   25: seperate commands.
   26: 
   27: Version 0 is used by all versions of GNU Zebra as of this writing, and
   28: versions of Quagga up to and including Quagga 0.98. Version 1 will be
   29: used as of Quagga 1.0.
   30: 
   31: @appendixsection Zebra Protocol Definition
   32: @appendixsubsec Zebra Protocol Header (version 0)
   33: @example
   34: @group
   35: 0                   1                   2                   3
   36: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   37: +-------------------------------+---------------+
   38: |           Length (2)          |   Command (1) |
   39: +-------------------------------+---------------+
   40: @end group
   41: @end example
   42: 
   43: @appendixsubsec Zebra Protocol Common Header (version 1)
   44: @example
   45: @group
   46: 0                   1                   2                   3
   47: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   48: +-------------------------------+---------------+-------------+
   49: |           Length (2)          |   Marker (1)  | Version (1) |
   50: +-------------------------------+---------------+-------------+
   51: |          Command (2)          |
   52: +-------------------------------+
   53: @end group
   54: @end example
   55: 
   56: @appendixsubsec Zebra Protocol Header Field Definitions
   57: @table @samp
   58: @item Length
   59: Total packet length including this header. The minimum length is 3
   60: bytes for version 0 messages and 6 bytes for version 1 messages.
   61: 
   62: @item Marker
   63: Static marker with a value of 255 always. This is to allow version 0
   64: Zserv headers (which do not include version explicitely) to be
   65: distinguished from versioned headers. Not present in version 0
   66: messages.
   67: 
   68: @item Version
   69: Version number of the Zserv message. Clients should not continue
   70: processing messages past the version field for versions they do not
   71: recognise. Not present in version 0 messages.
   72: 
   73: @item Command
   74: The Zebra Protocol command.
   75: @end table
   76: 
   77: @appendixsubsec Zebra Protocol Commands
   78: @multitable {ZEBRA_REDISTRIBUTE_DEFAULT_DELETE_WHATEVER} {99999}
   79: @headitem Command @tab Value
   80: @item ZEBRA_INTERFACE_ADD	
   81: @tab 1
   82: @item ZEBRA_INTERFACE_DELETE
   83: @tab 2
   84: @item ZEBRA_INTERFACE_ADDRESS_ADD
   85: @tab 3
   86: @item ZEBRA_INTERFACE_ADDRESS_DELETE
   87: @tab 4
   88: @item ZEBRA_INTERFACE_UP
   89: @tab 5
   90: @item ZEBRA_INTERFACE_DOWN
   91: @tab 6
   92: @item ZEBRA_IPV4_ROUTE_ADD
   93: @tab 7
   94: @item ZEBRA_IPV4_ROUTE_DELETE
   95: @tab 8
   96: @item ZEBRA_IPV6_ROUTE_ADD
   97: @tab 9
   98: @item ZEBRA_IPV6_ROUTE_DELETE
   99: @tab 10
  100: @item ZEBRA_REDISTRIBUTE_ADD
  101: @tab 11
  102: @item ZEBRA_REDISTRIBUTE_DELETE
  103: @tab 12
  104: @item ZEBRA_REDISTRIBUTE_DEFAULT_ADD
  105: @tab 13
  106: @item ZEBRA_REDISTRIBUTE_DEFAULT_DELETE
  107: @tab 14
  108: @item ZEBRA_IPV4_NEXTHOP_LOOKUP
  109: @tab 15
  110: @item ZEBRA_IPV6_NEXTHOP_LOOKUP
  111: @tab 16
  112: @end multitable

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