Zebra Protocol
**************

Zebra Protocol is a protocol which is used between protocol daemon and zebra.  Each protocol daemon sends selected routes to zebra daemon.  Then zebra manages which route is installed into the forwarding table.

Zebra Protocol is a TCP-based protocol.  Below is common header of Zebra Protocol.

     0                   1                   2                   3
     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Length (2)          |   Command (1) |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Length is total packet length including this header length.  So minimum length is three.  Command is Zebra Protocol command.

     ZEBRA_INTERFACE_ADD                1
     ZEBRA_INTERFACE_DELETE             2
     ZEBRA_INTERFACE_ADDRESS_ADD        3
     ZEBRA_INTERFACE_ADDRESS_DELETE     4
     ZEBRA_INTERFACE_UP                 5
     ZEBRA_INTERFACE_DOWN               6
     ZEBRA_IPV4_ROUTE_ADD               7
     ZEBRA_IPV4_ROUTE_DELETE            8
     ZEBRA_IPV6_ROUTE_ADD               9
     ZEBRA_IPV6_ROUTE_DELETE           10
     ZEBRA_REDISTRIBUTE_ADD            11
     ZEBRA_REDISTRIBUTE_DELETE         12
     ZEBRA_REDISTRIBUTE_DEFAULT_ADD    13
     ZEBRA_REDISTRIBUTE_DEFAULT_DELETE 14
     ZEBRA_IPV4_NEXTHOP_LOOKUP         15
     ZEBRA_IPV6_NEXTHOP_LOOKUP         16

     0                   1                   2                   3
     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Flags             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+