Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur
l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite
application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis
d'un appel setsockopt) ??
Ca m'aiderait grandement, je m'en sors pas !
Comme c'est HS, vous pouvez m'écrire à jls-fjs@yahoo.fr (et enlever le
tiret avant).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
no_spam
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la création de la socket: on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en sert (ioctl)... Il me parait étrange de faire les ioctls avant le setsockopt.... Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur
l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite
application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis
d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la création
de la socket:
on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en
sert (ioctl)...
Il me parait étrange de faire les ioctls avant le setsockopt....
Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la création de la socket: on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en sert (ioctl)... Il me parait étrange de faire les ioctls avant le setsockopt.... Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
Zouplaz
no_spam - :
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la création de la socket: on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en sert (ioctl)... Il me parait étrange de faire les ioctls avant le setsockopt.... Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
Voici le code (expurgé des commentaires et tests d'erreurs, pour faire plus court) :
1) Obtenir un socket ssock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
2) Obtenir les paramètres de l'interface choisie strcpy(interface_req.ifr_name,eth_name); ioctl(ssock,SIOCGIFFLAGS,&interface_req);
3) Bind sur l'interface seulement setsockopt(ssock, SOL_SOCKET,SO_BINDTODEVICE,eth_name,strlen(eth_name)+ 1);
Avec 1,2 et 4 : J'intercepte le traffic de toutes les interfaces, ce que je ne désire pas forcément.
Avec 1,2,3 et 4 : Ca change rien. Si je déplace 3 après 1, même résultat.
Si je rajoute l'appel suivant après 2) : ioctl(sniff_socket,SIOCGIFINDEX,&interface_req);
L'appli est "bindée" sur eth1 (systématiquement) et eth0 et ppp0 disparaissent de ifconfig (je suis bon pour un service network reload).
J'ai du mal à trouver de la doc sur ces appels, à part des infos très généralistes et assez floues (rien sur l'ordre d'enchainement des appels)...
Si tu as une idée...
Merci
no_spam - l_indien_no_more_spams@magic.fr :
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur
l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite
application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl
suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la
création de la socket:
on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en
sert (ioctl)...
Il me parait étrange de faire les ioctls avant le setsockopt....
Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
Voici le code (expurgé des commentaires et tests d'erreurs, pour faire
plus court) :
1) Obtenir un socket
ssock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
2) Obtenir les paramètres de l'interface choisie
strcpy(interface_req.ifr_name,eth_name);
ioctl(ssock,SIOCGIFFLAGS,&interface_req);
3) Bind sur l'interface seulement
setsockopt(ssock, SOL_SOCKET,SO_BINDTODEVICE,eth_name,strlen(eth_name)+
1);
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la création de la socket: on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en sert (ioctl)... Il me parait étrange de faire les ioctls avant le setsockopt.... Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
Voici le code (expurgé des commentaires et tests d'erreurs, pour faire plus court) :
1) Obtenir un socket ssock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
2) Obtenir les paramètres de l'interface choisie strcpy(interface_req.ifr_name,eth_name); ioctl(ssock,SIOCGIFFLAGS,&interface_req);
3) Bind sur l'interface seulement setsockopt(ssock, SOL_SOCKET,SO_BINDTODEVICE,eth_name,strlen(eth_name)+ 1);
Avec 1,2 et 4 : J'intercepte le traffic de toutes les interfaces, ce que je ne désire pas forcément.
Avec 1,2,3 et 4 : Ca change rien. Si je déplace 3 après 1, même résultat.
Si je rajoute l'appel suivant après 2) : ioctl(sniff_socket,SIOCGIFINDEX,&interface_req);
L'appli est "bindée" sur eth1 (systématiquement) et eth0 et ppp0 disparaissent de ifconfig (je suis bon pour un service network reload).
J'ai du mal à trouver de la doc sur ces appels, à part des infos très généralistes et assez floues (rien sur l'ordre d'enchainement des appels)...
Si tu as une idée...
Merci
no_spam
On Sun, 07 Mar 2004 12:29:34 +0000, Zouplaz wrote:
no_spam - :
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la création de la socket: on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en sert (ioctl)... Il me parait étrange de faire les ioctls avant le setsockopt.... Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
Voici le code (expurgé des commentaires et tests d'erreurs, pour faire plus court) :
1) Obtenir un socket ssock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
2) Obtenir les paramètres de l'interface choisie strcpy(interface_req.ifr_name,eth_name); ioctl(ssock,SIOCGIFFLAGS,&interface_req);
3) Bind sur l'interface seulement setsockopt(ssock, SOL_SOCKET,SO_BINDTODEVICE,eth_name,strlen(eth_name)+ 1);
J'ai du mal à trouver de la doc sur ces appels, à part des infos très généralistes et assez floues (rien sur l'ordre d'enchainement des appels)...
Dans le code du kernel :-)
Si tu as une idée...
J'ai regardé la libpcap, leur code est complètement différent. Comme c'est du code qui marche, tu devrais sans doute t'en inspirer !
On Sun, 07 Mar 2004 12:29:34 +0000, Zouplaz wrote:
no_spam - l_indien_no_more_spams@magic.fr :
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur
l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite
application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl
suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la
création de la socket:
on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en
sert (ioctl)...
Il me parait étrange de faire les ioctls avant le setsockopt....
Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
Voici le code (expurgé des commentaires et tests d'erreurs, pour faire
plus court) :
1) Obtenir un socket
ssock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
2) Obtenir les paramètres de l'interface choisie
strcpy(interface_req.ifr_name,eth_name);
ioctl(ssock,SIOCGIFFLAGS,&interface_req);
3) Bind sur l'interface seulement
setsockopt(ssock, SOL_SOCKET,SO_BINDTODEVICE,eth_name,strlen(eth_name)+
1);
On Sun, 07 Mar 2004 12:29:34 +0000, Zouplaz wrote:
no_spam - :
On Sat, 06 Mar 2004 10:29:32 +0000, Zouplaz wrote:
Bonjour, j'ai posté dans les ng adéquats plusieurs questions sur l'utilisation de SO_BINDTODEVICE, sans réponses (c'est une petite application en C)...
Est-ce que quelqu'un ici pourrait m'aider (plusieurs appels ioctl suivis d'un appel setsockopt) ??
Etrange, d'habitude, setsocktopt est plutôt fait au moment de la création de la socket: on crée la socket, on la paramêtre (setsockopt) et ensuite on s'en sert (ioctl)... Il me parait étrange de faire les ioctls avant le setsockopt.... Envoie moi ton bout de code, j'y jetterai un coup d'oeil...
Voici le code (expurgé des commentaires et tests d'erreurs, pour faire plus court) :
1) Obtenir un socket ssock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
2) Obtenir les paramètres de l'interface choisie strcpy(interface_req.ifr_name,eth_name); ioctl(ssock,SIOCGIFFLAGS,&interface_req);
3) Bind sur l'interface seulement setsockopt(ssock, SOL_SOCKET,SO_BINDTODEVICE,eth_name,strlen(eth_name)+ 1);
J'ai du mal à trouver de la doc sur ces appels, à part des infos très généralistes et assez floues (rien sur l'ordre d'enchainement des appels)...
Dans le code du kernel :-)
De tête, tu sais pas dans quel coin de l'arborescence chercher ? (au moins le rép)
Pour libcap, j'ai commencé à fouiner (ça peut aider), y aussi le code d'iptraf qui est assez court (relativement)...
no_spam
On Sun, 07 Mar 2004 13:46:19 +0000, Zouplaz wrote:
no_spam - :
J'ai du mal à trouver de la doc sur ces appels, à part des infos très généralistes et assez floues (rien sur l'ordre d'enchainement des appels)...
Dans le code du kernel :-)
De tête, tu sais pas dans quel coin de l'arborescence chercher ? (au moins le rép)
dans net/core/sock.c pour les options génériques sur les sockets (dont SO_BINDTODEVICE). Ensuite, net/ipv4/ip_sockglue.c:ip_setsockopt net/ipv4/raw.c:raw_setsockopt et net/ipv4/tcp.c:tcp_setsockopt pourront te donner des infos sur des options plus spécifiques. D'une façon générale: grep -r setsockopt * dans net/ te donnera tous les endroits ou il y a des options pour les sockets.
Et net/ipv4/af_inet.c:inet_bind et net/ipv4/raw:raw_bind peuvent être interressants...
Pour libcap, j'ai commencé à fouiner (ça peut aider), y aussi le code d'iptraf qui est assez court (relativement)...
C'est vrai.
On Sun, 07 Mar 2004 13:46:19 +0000, Zouplaz wrote:
no_spam - l_indien_no_more_spams@magic.fr :
J'ai du mal à trouver de la doc sur ces appels, à part des infos très
généralistes et assez floues (rien sur l'ordre d'enchainement des
appels)...
Dans le code du kernel :-)
De tête, tu sais pas dans quel coin de l'arborescence chercher ? (au moins
le rép)
dans net/core/sock.c pour les options génériques sur les sockets
(dont SO_BINDTODEVICE).
Ensuite, net/ipv4/ip_sockglue.c:ip_setsockopt
net/ipv4/raw.c:raw_setsockopt
et net/ipv4/tcp.c:tcp_setsockopt
pourront te donner des infos sur des options plus spécifiques.
D'une façon générale:
grep -r setsockopt *
dans net/ te donnera tous les endroits ou il y a des options pour
les sockets.
Et net/ipv4/af_inet.c:inet_bind et net/ipv4/raw:raw_bind
peuvent être interressants...
Pour libcap, j'ai commencé à fouiner (ça peut aider), y aussi le code
d'iptraf qui est assez court (relativement)...
On Sun, 07 Mar 2004 13:46:19 +0000, Zouplaz wrote:
no_spam - :
J'ai du mal à trouver de la doc sur ces appels, à part des infos très généralistes et assez floues (rien sur l'ordre d'enchainement des appels)...
Dans le code du kernel :-)
De tête, tu sais pas dans quel coin de l'arborescence chercher ? (au moins le rép)
dans net/core/sock.c pour les options génériques sur les sockets (dont SO_BINDTODEVICE). Ensuite, net/ipv4/ip_sockglue.c:ip_setsockopt net/ipv4/raw.c:raw_setsockopt et net/ipv4/tcp.c:tcp_setsockopt pourront te donner des infos sur des options plus spécifiques. D'une façon générale: grep -r setsockopt * dans net/ te donnera tous les endroits ou il y a des options pour les sockets.
Et net/ipv4/af_inet.c:inet_bind et net/ipv4/raw:raw_bind peuvent être interressants...
Pour libcap, j'ai commencé à fouiner (ça peut aider), y aussi le code d'iptraf qui est assez court (relativement)...