(data *[]byte)
| 1278 | } |
| 1279 | |
| 1280 | func decodeExtendedGatewayFlowRecord(data *[]byte) (SFlowExtendedGatewayFlowRecord, error) { |
| 1281 | eg := SFlowExtendedGatewayFlowRecord{} |
| 1282 | var fdf SFlowFlowDataFormat |
| 1283 | var extendedGatewayAddressType SFlowIPType |
| 1284 | var communitiesLength uint32 |
| 1285 | var community uint32 |
| 1286 | |
| 1287 | *data, fdf = (*data)[4:], SFlowFlowDataFormat(binary.BigEndian.Uint32((*data)[:4])) |
| 1288 | eg.EnterpriseID, eg.Format = fdf.decode() |
| 1289 | *data, eg.FlowDataLength = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1290 | *data, extendedGatewayAddressType = (*data)[4:], SFlowIPType(binary.BigEndian.Uint32((*data)[:4])) |
| 1291 | *data, eg.NextHop = (*data)[extendedGatewayAddressType.Length():], (*data)[:extendedGatewayAddressType.Length()] |
| 1292 | *data, eg.AS = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1293 | *data, eg.SourceAS = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1294 | *data, eg.PeerAS = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1295 | *data, eg.ASPathCount = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1296 | for i := uint32(0); i < eg.ASPathCount; i++ { |
| 1297 | asPath := SFlowASDestination{} |
| 1298 | asPath.decodePath(data) |
| 1299 | eg.ASPath = append(eg.ASPath, asPath) |
| 1300 | } |
| 1301 | *data, communitiesLength = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1302 | eg.Communities = make([]uint32, communitiesLength) |
| 1303 | for j := uint32(0); j < communitiesLength; j++ { |
| 1304 | *data, community = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1305 | eg.Communities[j] = community |
| 1306 | } |
| 1307 | *data, eg.LocalPref = (*data)[4:], binary.BigEndian.Uint32((*data)[:4]) |
| 1308 | return eg, nil |
| 1309 | } |
| 1310 | |
| 1311 | // ************************************************** |
| 1312 | // Extended URL Flow Record |
no test coverage detected
searching dependent graphs…