func()

in pcap-cli/internal/transformer/json_translator.go [1205:1244]


func (t *JSONPcapTranslator) checkL3Address(
	ctx context.Context,
	json *gabs.Container,
	data map[string]any,
	ifaces netIfaceIndex,
	iface *PcapIface,
	srcIP, dstIP net.IP,
) {
	if iface.Index != 0 {
		return
	}

	// O(1) interface lookups by IP
	_iface, ok := ifaces[srcIP.String()]
	if !ok {
		_iface, ok = ifaces[dstIP.String()]
	}

	if !ok {
		// this should never happen
		return
	}

	data["ifaceIndex"] = _iface.Index
	data["ifaceName"] = _iface.Name

	ifaceJSON := json.S("iface")

	ifaceJSON.Set(_iface.Index, "index")
	ifaceJSON.Set(_iface.Name, "name")

	if sizeOfAddrs := _iface.Addrs.Cardinality(); sizeOfAddrs > 0 {
		addrs, _ := ifaceJSON.ArrayOfSize(sizeOfAddrs, "addrs")
		_iface.Addrs.Each(func(IP string) bool {
			sizeOfAddrs -= 1
			addrs.SetIndex(IP, sizeOfAddrs)
			return false
		})
	}
}