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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+