Annotation of embedaddon/quagga/doc/appendix.texi, revision 1.1.1.1

1.1       misho       1: @node  Packet Binary Dump Format
                      2: @appendix Packet Binary Dump Format
                      3: 
                      4:   Quagga can dump routing protocol packet into file with a binary format
                      5: (@pxref{Dump BGP packets and table}).
                      6: 
                      7:   It seems to be better that we share the MRT's header format for
                      8: backward compatibility with MRT's dump logs. We should also define the
                      9: binary format excluding the header, because we must support both IP
                     10: v4 and v6 addresses as socket addresses and / or routing entries.
                     11: 
                     12:   In the last meeting, we discussed to have a version field in the
                     13: header. But Masaki told us that we can define new `type' value rather
                     14: than having a `version' field, and it seems to be better because we
                     15: don't need to change header format.
                     16: 
                     17:   Here is the common header format. This is same as that of MRT.
                     18: 
                     19: @example
                     20: @group
                     21: 0                   1                   2                   3
                     22: 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
                     23: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     24: |                              Time                             |
                     25: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     26: |             Type              |            Subtype            |
                     27: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     28: |                             Length                            |
                     29: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     30: @end group
                     31: @end example
                     32: 
                     33:   If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_STATE_CHANGE, and
                     34: Address Family == IP (version 4)
                     35: 
                     36: @example
                     37: @group
                     38:  0                   1                   2                   3
                     39:  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
                     40: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     41: |        Source AS number       |     Destination AS number     |
                     42: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     43: |        Interface Index        |      Address Family           |
                     44: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     45: |                        Source IP address                      |
                     46: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     47: |                     Destination IP address                    |
                     48: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     49: |            Old State          |           New State           |
                     50: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     51: @end group
                     52: @end example
                     53: 
                     54: Where State is the value defined in RFC1771.
                     55: 
                     56: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_STATE_CHANGE,
                     57: and Address Family == IP version 6
                     58: 
                     59: @example
                     60: @group
                     61:  0                   1                   2                   3
                     62:  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
                     63: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     64: |        Source AS number       |     Destination AS number     |
                     65: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     66: |        Interface Index        |      Address Family           |
                     67: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     68: |                        Source IP address                      |
                     69: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     70: |                        Source IP address (Cont'd)             |
                     71: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     72: |                        Source IP address (Cont'd)             |
                     73: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     74: |                        Source IP address (Cont'd)             |
                     75: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     76: |                     Destination IP address                    |
                     77: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     78: |                     Destination IP address (Cont'd)           |
                     79: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     80: |                     Destination IP address (Cont'd)           |
                     81: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     82: |                     Destination IP address (Cont'd)           |
                     83: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     84: |            Old State          |           New State           |
                     85: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     86: @end group
                     87: @end example
                     88: 
                     89: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
                     90: and Address Family == IP (version 4)
                     91: 
                     92: @example
                     93: @group
                     94:  0                   1                   2                   3
                     95:  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
                     96: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     97: |        Source AS number       |     Destination AS number     |
                     98: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                     99: |        Interface Index        |      Address Family           |
                    100: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    101: |                        Source IP address                      |
                    102: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    103: |                     Destination IP address                    |
                    104: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    105: |                       BGP Message Packet                      |
                    106: |                                                               |
                    107: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    108: @end group
                    109: @end example
                    110: 
                    111: Where BGP Message Packet is the whole contents of the
                    112: BGP4 message including header portion.
                    113: 
                    114: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_MESSAGE,
                    115: and Address Family == IP version 6
                    116: 
                    117: @example
                    118: @group
                    119:  0                   1                   2                   3
                    120:  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
                    121: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    122: |        Source AS number       |     Destination AS number     |
                    123: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    124: |        Interface Index        |      Address Family           |
                    125: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    126: |                        Source IP address                      |
                    127: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    128: |                        Source IP address (Cont'd)             |
                    129: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    130: |                        Source IP address (Cont'd)             |
                    131: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    132: |                        Source IP address (Cont'd)             |
                    133: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    134: |                     Destination IP address                    |
                    135: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    136: |                     Destination IP address (Cont'd)           |
                    137: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    138: |                     Destination IP address (Cont'd)           |
                    139: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    140: |                     Destination IP address (Cont'd)           |
                    141: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    142: |                       BGP Message Packet                      |
                    143: |                                                               |
                    144: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    145: @end group
                    146: @end example
                    147: 
                    148: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
                    149: and Address Family == IP (version 4)
                    150: 
                    151: @example
                    152: @group
                    153:  0                   1                   2                   3
                    154:  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
                    155: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    156: |            View #             |            Status             |
                    157: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    158: |                        Time Last Change                       |
                    159: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    160: |       Address Family          |    SAFI       | Next-Hop-Len  |
                    161: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    162: |                        Next Hop Address                       |
                    163: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    164: | Prefix Length |             Address Prefix [variable]         |
                    165: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    166: |       Attribute Length        |
                    167: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    168: |      BGP Attribute [variable length]                         |
                    169: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    170: @end group
                    171: @end example
                    172: 
                    173: If `type' is PROTOCOL_BGP4MP, `subtype' is BGP4MP_ENTRY,
                    174: and Address Family == IP version 6
                    175: 
                    176: @example
                    177: @group
                    178:  0                   1                   2                   3
                    179:  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
                    180: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    181: |            View #             |            Status             |
                    182: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    183: |                        Time Last Change                       |
                    184: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    185: |       Address Family          |    SAFI       | Next-Hop-Len  |
                    186: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    187: |                        Next Hop Address                       |
                    188: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    189: |                        Next Hop Address (Cont'd)              |
                    190: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    191: |                        Next Hop Address (Cont'd)              |
                    192: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    193: |                        Next Hop Address (Cont'd)              |
                    194: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    195: | Prefix Length |             Address Prefix [variable]         |
                    196: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    197: |     Address Prefix (cont'd) [variable]        |
                    198: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    199: |       Attribute Length        |
                    200: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    201: |      BGP Attribute [variable length]                             |
                    202: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    203: @end group
                    204: @end example
                    205: 
                    206:        BGP4 Attribute must not contain MP_UNREACH_NLRI.
                    207:        If BGP Attribute has MP_REACH_NLRI field, it must has
                    208:        zero length NLRI, e.g., MP_REACH_NLRI has only Address
                    209:        Family, SAFI and next-hop values.
                    210: 
                    211: If `type' is PROTOCOL_BGP4MP and `subtype' is BGP4MP_SNAPSHOT,
                    212: 
                    213: @example
                    214: @group
                    215:  0                   1                   2                   3
                    216:  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
                    217: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    218: |           View #              |       File Name [variable]    |
                    219: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    220: @end group
                    221: @end example
                    222: 
                    223:     The file specified in "File Name" contains all routing entries,
                    224:     which are in the format of ``subtype == BGP4MP_ENTRY''.
                    225: 
                    226: @example
                    227: @group
                    228: Constants:
                    229:   /* type value */
                    230:   #define MSG_PROTOCOL_BGP4MP 16
                    231:   /* subtype value */
                    232:   #define BGP4MP_STATE_CHANGE 0
                    233:   #define BGP4MP_MESSAGE 1
                    234:   #define BGP4MP_ENTRY 2
                    235:   #define BGP4MP_SNAPSHOT 3
                    236: @end group
                    237: @end example

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