Extended router records have the following structure: 0 15 31 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | 20 bit Interprise (0) |12 bit format | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | record length
(data *[]byte)
| 1147 | // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |
| 1148 | |
| 1149 | func decodeExtendedRouterFlowRecord(data *[]byte) (SFlowExtendedRouterFlowRecord, error) { |
| 1150 | er := SFlowExtendedRouterFlowRecord{} |
| 1151 | var fdf SFlowFlowDataFormat |
| 1152 | var extendedRouterAddressType SFlowIPType |
| 1153 | |
| 1154 | *data, fdf = (*data)[4:], SFlowFlowDataFormat(binary.BigEndian.Uint32((*data)[:4])) |
| 1155 | er.EnterpriseID, er.Format = fdf.decode() |
| 1156 | *data, er.FlowDataLength = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1157 | *data, extendedRouterAddressType = (*data)[4:], SFlowIPType(binary.BigEndian.Uint32((*data)[:4])) |
| 1158 | *data, er.NextHop = (*data)[extendedRouterAddressType.Length():], (*data)[:extendedRouterAddressType.Length()] |
| 1159 | *data, er.NextHopSourceMask = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1160 | *data, er.NextHopDestinationMask = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1161 | return er, nil |
| 1162 | } |
| 1163 | |
| 1164 | // SFlowExtendedGatewayFlowRecord describes information treasured by |
| 1165 | // nework engineers everywhere: AS path information listing which |
no test coverage detected
searching dependent graphs…