Annotation of embedaddon/quagga/doc/appendix.texi, revision 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>