tcpdump getifaddrs: Connection refused
Jan 'Red Bully' Seiffert
redbully at cc.fh-luh.de
Wed Mar 16 19:20:35 CET 2005
Jan-Benedict Glaw schrieb:
> On Wed, 2005-03-16 18:30:32 +0100, Jan 'Red Bully' Seiffert <redbully at cc.fh-luh.de>
> wrote in message <42386D38.2030908 at cc.fh-luh.de>:
>>>Andreas Koch schrieb:
>>>socket(PF_NETLINK, SOCK_RAW, 0) = 3
>>>bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
>>>getsockname(3, {sa_family=AF_NETLINK, pid=1566, groups=00000000}, [12]) = 0
>>>time(NULL) = 1110994717
>>>sendto(3, "\24\0\0\0\22\0\1\3\35o8B\0\0\0\0\0\0\21\300", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = -1
>>>ECONNREFUSED (Connection refused)
>>
>>Hier wirds interressant.
>>Sieht so aus, als wenn getifaddr() einen netlink(7)-Socket oeffnet.
>>Warscheinlich getrieben durch libnetlink, die scheinen sich mit dem
>>iproute/ipchains/iptables-Teil des Kernel unterhalten zu wollen.
>>Naja, das entscheidende Problem ist anscheinend die letzte Zeile, das
>>senden der Anfrage schlaegt fehl, da die Gegenseite die Verbindung
>>abgelehnt hat (geaendertes Antwortverhalten im Kernel > 2.2 ?).
>
>
> Ist in 2.2.x einfach noch nicht implementiert, oder zumindest anders.
> ifconfig kann ja vermutlich da auch eine Liste der interfaces
> präsentieren...
>
Es sieht so aus, als wenn der Kernel mit der Abfrage ueber netlink
nichts am hut hat. Ein Blick in den source der GLIBC zeigt (wenn auch
2.3.4):
es gibt ein generisches getifaddrs() mit ERNOSYS
es gibt eine GNU-Variante die ueber ioctls zumindest ip-basierte
Interfaces listet.
es gibt eine linux-Variante mit netlink...
Der phoese code ist dann dieser:
> /* Tell the kernel that we wish to get a list of all
> active interfaces. */
> if (__netlink_sendreq (&nh, RTM_GETLINK) < 0)
> {
> result = -1;
> goto exit_close;
> }
aber man beachte den anfang von sysdeps/sysv/linux/ifaddrs.c:
> /* We don't know if we have NETLINK support compiled in in our
> Kernel, so include the old implementation as fallback. */
> #if __ASSUME_NETLINK_SUPPORT == 0
> int __no_netlink_support attribute_hidden;
>
> # define getifaddrs fallback_getifaddrs
> # include "sysdeps/gnu/ifaddrs.c"
> # undef getifaddrs
> #endif
Was unsere die These das die libc nicht ganz zum Kernel passt stuetzt.
> MfG, JBG
>
>
Gruss
Jan
--
> Assembler, verdammt nah an der CPU!
VHDL, bei uns sitzen sie in der ersten Reihe!
> Was man nicht in Assembler programmieren kann, muß man löten.
Was man nicht in VHDL programmieren kann, muß in Software emuliert werden.
More information about the Linux
mailing list