# URL ip-address:port/fqdn ident method
# http://g.idnes.cz/js/ad/vylohy.js 127.0.0.1:42423/localhost - GET
do { $_=$error; next; } if !(my($url,$client_hostip,$client_port,$method)=m#^\s*(.+?)\s+([\d.]+)(?::(\d+))\S*\s+\S+\s+(\S+)\s*$#s);
do { $_=$error; next; } if !(my($client_arp,$client_vid)=My::HotelKeeper->client_arp_vid($client_hostip,$client_port,$C->{"proxy_hostip"},$C->{"proxy_port"}));


sub client_arp_vid($$$$$)
{
my($self,$client_hostip,$client_port,$server_hostip,$server_port)=@_;

	# tcp      6 428476 ESTABLISHED src=192.168.192.1 dst=192.168.192.50 sport=36440 dport=22 packets=1718 bytes=98100 src=192.168.192.50 dst=192.168.192.1 sport=22 dport=36440 packets=1522 bytes=132767 [ASSURED] use=1 mark=0
	local *CONNTRACK;
	open CONNTRACK,$CONNTRACK_PATHNAME or confess "open \"$CONNTRACK_PATHNAME\": $!";
	my $conntrack=do { local $/=undef(); <CONNTRACK>; };
	close CONNTRACK or confess "close \"$CONNTRACK_PATHNAME\": $!";
	my $mark=($conntrack=~/^tcp\b.* \Qsrc=$client_hostip dst=$server_hostip sport=$client_port dport=$server_port\E .* mark=(\d+)/m)[0];
#       return if !$mark;
	$mark=qr/\d+/ if !defined $mark;        # for non-FORWARDed (local) connections
	# IP address       HW type     Flags       HW address            Mask     Device
	# 192.168.2.254    0x1         0x2         00:08:74:3F:FB:1B     *        eth1.2
	local *ARP;
	open ARP,$ARP_PATHNAME or confess "open \"$ARP_PATHNAME\": $!";
	my $arp_file=do { local $/=undef(); <ARP>; };
	close ARP or confess "close \"$ARP_PATHNAME\": $!";
	my($arp,$vid)=($arp_file=~/^\Q$client_hostip\E\s+\S+\s+\S+\s+((?:[[:xdigit:]]{2}:){5}[[:xdigit:]]{2})\s+\S+\s+eth\d+[.]($mark)$/m);
	return if !$arp || !defined $vid;
	return($arp,$vid);
}

