Voila : je bosse sur un projet perso & free qui touche aux reseaux TCP/IP.
Il s'agit d'un petit demon qui teste si les station d'un reseau sont 'up'.
pour le lancer, je fais :
root # eco -D -t 192.168.100.2
(le -D veut dire 'daemonize' et le -t specifie l'adresse de la cible)
et lorsque la station correspondante (station cible) a la dite adresse
ne repond plus, le demon en prend bonne note et adopte un comportement
adequat.
C'est ce que fait la version actuelle.
Ceci dit, mon objectif est de pouvoir tester non une seule adresse IP,
mais tout un ensemble.
Ainsi, je devrais pouvoir specifier comme cible :
192.168.100.1/255.255.255.0
192.168.200.21
192.168.210.76
et etc.
Et donc, mon probleme est de trouver un algorithme efficace pour
parcourir toute les adresses ainsi définies (stockees dans une variable
de type chaine de caractere avec zero terminal)
voila :)
la definition de ces adresses doit etre faite dans un format standard /
universel.
j'imagine que ce genre de code doit etre tres courant (ah oui, je
developpe ce demon sous Linux) vu tous les fichiers de config et autres
scripts mentionnant des adresses / reseaux IP se trouvant sur mon systeme.
C'est pourquoi il me semble qu'il a du etre etabli un algorithme optimal
pour faire ce boulot, qui ne laissa pas place a quelque obscur bug et
qui suivit une syntaxe universelle.
Alors s'il existe ici une personne qui puisse m'apporter quelque lumiere
a ce sujet, je lui en serai extremement reconnaissant de le faire.
MERCI :)
PS : EVIDEMENT que le code que je cherche a faire sera en C. ben alors !
parce que oui, je sais et s'il en avait ete autrement que je m'en serais
alle sur un autre forum.
Et si je ne mets pas les accents sur les lettres c'est parce que j'ai un
petit pbm de config que je n'ai pas encore resolu et comme je ne
considere pas cela comme etant reellement prioritaire, cela risque de
durer encore un peu. Et alors ? ca ne limite que tres peu dans la
comprehension de ce que j'ecris meme si, par ailleurs, il se peut que ma
presentation des choses fut un peu confuse.
En plus ca va plus vite de ne pas faire les accents quand on tape au
clavier.
D'ailleurs ... mais bon, non. jm'en fous apres tout. je n'empeche
personne d'ajouter les accents qu'il veut sur les lettres qu'il veut moi.
Enfin, quoi qu'il en soit, ce qu'il me faut c'est une reponse a ma
question et non une polemique sur un truc si derisoire, alors hop !
on chasse de son esprit toute idee parasite et on se met au boulot.
Le ou la premier(e) qui m'aura fourni la bonne reponse aura gagne toute
mon estime. Alors ca, si ca n'en vaut pas la peine...
Voila : je bosse sur un projet perso & free qui touche aux reseaux TCP/IP.
Il s'agit d'un petit demon qui teste si les station d'un reseau sont 'up'.
pour le lancer, je fais :
root # eco -D -t 192.168.100.2 (le -D veut dire 'daemonize' et le -t specifie l'adresse de la cible)
et lorsque la station correspondante (station cible) a la dite adresse ne repond plus, le demon en prend bonne note et adopte un comportement adequat.
C'est ce que fait la version actuelle.
Ceci dit, mon objectif est de pouvoir tester non une seule adresse IP, mais tout un ensemble.
Ainsi, je devrais pouvoir specifier comme cible :
192.168.100.1/255.255.255.0 192.168.200.21 192.168.210.76 et etc.
Aussi: 192.168.100.1/24
Comme les masques de nos jours sont le plus souvent continus (tous les bits à un à gauche, tous les bits à zéro à droite), on peut facilement indiquer un masque en ne donnant que le nombre de bits à un.
On peut aussi vouloir inférer des masques automatiquement. Par exemple, si on écrit: 10 on veut probablement dire: 10/8 mais si on écrit: 10.1 on veut probablement dire: 10.1/16 d'un autre côté: 10.0.0.0 veut probablement dire: 10/8 Donc on peut vouloir avoir une analyse particulière.
Je ne connais pas de fonction "standard" pour parser ces couples adresse/masque. Il y a des fonctions pour parser des adresses IP. Il y a des bibliothèques pour manipuler les adresses IP qui contiennent peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait moi même...
Il faut aussi penser à IPv6, sinon on y arrivera jamais!
Et donc, mon probleme est de trouver un algorithme efficace pour parcourir toute les adresses ainsi définies (stockees dans une variable de type chaine de caractere avec zero terminal)
Je regarderai les sources des net-tools, et ipcalc...
voila :) la definition de ces adresses doit etre faite dans un format standard / universel.
j'imagine que ce genre de code doit etre tres courant (ah oui, je developpe ce demon sous Linux) vu tous les fichiers de config et autres scripts mentionnant des adresses / reseaux IP se trouvant sur mon systeme. C'est pourquoi il me semble qu'il a du etre etabli un algorithme optimal pour faire ce boulot, qui ne laissa pas place a quelque obscur bug et qui suivit une syntaxe universelle.
Alors s'il existe ici une personne qui puisse m'apporter quelque lumiere a ce sujet, je lui en serai extremement reconnaissant de le faire.
MERCI :)
PS : EVIDEMENT que le code que je cherche a faire sera en C. ben alors ! parce que oui, je sais et s'il en avait ete autrement que je m'en serais alle sur un autre forum. Et si je ne mets pas les accents sur les lettres c'est parce que j'ai un petit pbm de config que je n'ai pas encore resolu et comme je ne considere pas cela comme etant reellement prioritaire, cela risque de durer encore un peu. Et alors ? ca ne limite que tres peu dans la comprehension de ce que j'ecris meme si, par ailleurs, il se peut que ma presentation des choses fut un peu confuse. En plus ca va plus vite de ne pas faire les accents quand on tape au clavier. D'ailleurs ... mais bon, non. jm'en fous apres tout. je n'empeche personne d'ajouter les accents qu'il veut sur les lettres qu'il veut moi. Enfin, quoi qu'il en soit, ce qu'il me faut c'est une reponse a ma question et non une polemique sur un truc si derisoire, alors hop ! on chasse de son esprit toute idee parasite et on se met au boulot. Le ou la premier(e) qui m'aura fourni la bonne reponse aura gagne toute mon estime. Alors ca, si ca n'en vaut pas la peine...
-- __Pascal_Bourguignon__ http://www.informatimago.com/ Do not adjust your mind, there is a fault in reality.
david <nobody@free.fr> writes:
hello evly body
Voila : je bosse sur un projet perso & free qui touche aux reseaux TCP/IP.
Il s'agit d'un petit demon qui teste si les station d'un reseau sont 'up'.
pour le lancer, je fais :
root # eco -D -t 192.168.100.2
(le -D veut dire 'daemonize' et le -t specifie l'adresse de la cible)
et lorsque la station correspondante (station cible) a la dite adresse
ne repond plus, le demon en prend bonne note et adopte un comportement
adequat.
C'est ce que fait la version actuelle.
Ceci dit, mon objectif est de pouvoir tester non une seule adresse IP,
mais tout un ensemble.
Ainsi, je devrais pouvoir specifier comme cible :
192.168.100.1/255.255.255.0
192.168.200.21
192.168.210.76
et etc.
Aussi: 192.168.100.1/24
Comme les masques de nos jours sont le plus souvent continus (tous les
bits à un à gauche, tous les bits à zéro à droite), on peut facilement
indiquer un masque en ne donnant que le nombre de bits à un.
On peut aussi vouloir inférer des masques automatiquement. Par
exemple, si on écrit: 10 on veut probablement dire: 10/8
mais si on écrit: 10.1 on veut probablement dire: 10.1/16
d'un autre côté: 10.0.0.0 veut probablement dire: 10/8
Donc on peut vouloir avoir une analyse particulière.
Je ne connais pas de fonction "standard" pour parser ces couples
adresse/masque. Il y a des fonctions pour parser des adresses IP. Il
y a des bibliothèques pour manipuler les adresses IP qui contiennent
peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait
moi même...
Il faut aussi penser à IPv6, sinon on y arrivera jamais!
Et donc, mon probleme est de trouver un algorithme efficace pour
parcourir toute les adresses ainsi définies (stockees dans une
variable de type chaine de caractere avec zero terminal)
Je regarderai les sources des net-tools, et ipcalc...
voila :)
la definition de ces adresses doit etre faite dans un format standard
/ universel.
j'imagine que ce genre de code doit etre tres courant (ah oui, je
developpe ce demon sous Linux) vu tous les fichiers de config et
autres scripts mentionnant des adresses / reseaux IP se trouvant sur
mon systeme.
C'est pourquoi il me semble qu'il a du etre etabli un algorithme
optimal pour faire ce boulot, qui ne laissa pas place a quelque obscur
bug et qui suivit une syntaxe universelle.
Alors s'il existe ici une personne qui puisse m'apporter quelque
lumiere a ce sujet, je lui en serai extremement reconnaissant de le
faire.
MERCI :)
PS : EVIDEMENT que le code que je cherche a faire sera en C. ben alors !
parce que oui, je sais et s'il en avait ete autrement que je m'en
serais alle sur un autre forum.
Et si je ne mets pas les accents sur les lettres c'est parce que j'ai
un petit pbm de config que je n'ai pas encore resolu et comme je ne
considere pas cela comme etant reellement prioritaire, cela risque de
durer encore un peu. Et alors ? ca ne limite que tres peu dans la
comprehension de ce que j'ecris meme si, par ailleurs, il se peut que
ma presentation des choses fut un peu confuse.
En plus ca va plus vite de ne pas faire les accents quand on tape au
clavier.
D'ailleurs ... mais bon, non. jm'en fous apres tout. je n'empeche
personne d'ajouter les accents qu'il veut sur les lettres qu'il veut
moi.
Enfin, quoi qu'il en soit, ce qu'il me faut c'est une reponse a ma
question et non une polemique sur un truc si derisoire, alors hop !
on chasse de son esprit toute idee parasite et on se met au boulot.
Le ou la premier(e) qui m'aura fourni la bonne reponse aura gagne
toute mon estime. Alors ca, si ca n'en vaut pas la peine...
--
__Pascal_Bourguignon__
http://www.informatimago.com/
Do not adjust your mind, there is a fault in reality.
Voila : je bosse sur un projet perso & free qui touche aux reseaux TCP/IP.
Il s'agit d'un petit demon qui teste si les station d'un reseau sont 'up'.
pour le lancer, je fais :
root # eco -D -t 192.168.100.2 (le -D veut dire 'daemonize' et le -t specifie l'adresse de la cible)
et lorsque la station correspondante (station cible) a la dite adresse ne repond plus, le demon en prend bonne note et adopte un comportement adequat.
C'est ce que fait la version actuelle.
Ceci dit, mon objectif est de pouvoir tester non une seule adresse IP, mais tout un ensemble.
Ainsi, je devrais pouvoir specifier comme cible :
192.168.100.1/255.255.255.0 192.168.200.21 192.168.210.76 et etc.
Aussi: 192.168.100.1/24
Comme les masques de nos jours sont le plus souvent continus (tous les bits à un à gauche, tous les bits à zéro à droite), on peut facilement indiquer un masque en ne donnant que le nombre de bits à un.
On peut aussi vouloir inférer des masques automatiquement. Par exemple, si on écrit: 10 on veut probablement dire: 10/8 mais si on écrit: 10.1 on veut probablement dire: 10.1/16 d'un autre côté: 10.0.0.0 veut probablement dire: 10/8 Donc on peut vouloir avoir une analyse particulière.
Je ne connais pas de fonction "standard" pour parser ces couples adresse/masque. Il y a des fonctions pour parser des adresses IP. Il y a des bibliothèques pour manipuler les adresses IP qui contiennent peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait moi même...
Il faut aussi penser à IPv6, sinon on y arrivera jamais!
Et donc, mon probleme est de trouver un algorithme efficace pour parcourir toute les adresses ainsi définies (stockees dans une variable de type chaine de caractere avec zero terminal)
Je regarderai les sources des net-tools, et ipcalc...
voila :) la definition de ces adresses doit etre faite dans un format standard / universel.
j'imagine que ce genre de code doit etre tres courant (ah oui, je developpe ce demon sous Linux) vu tous les fichiers de config et autres scripts mentionnant des adresses / reseaux IP se trouvant sur mon systeme. C'est pourquoi il me semble qu'il a du etre etabli un algorithme optimal pour faire ce boulot, qui ne laissa pas place a quelque obscur bug et qui suivit une syntaxe universelle.
Alors s'il existe ici une personne qui puisse m'apporter quelque lumiere a ce sujet, je lui en serai extremement reconnaissant de le faire.
MERCI :)
PS : EVIDEMENT que le code que je cherche a faire sera en C. ben alors ! parce que oui, je sais et s'il en avait ete autrement que je m'en serais alle sur un autre forum. Et si je ne mets pas les accents sur les lettres c'est parce que j'ai un petit pbm de config que je n'ai pas encore resolu et comme je ne considere pas cela comme etant reellement prioritaire, cela risque de durer encore un peu. Et alors ? ca ne limite que tres peu dans la comprehension de ce que j'ecris meme si, par ailleurs, il se peut que ma presentation des choses fut un peu confuse. En plus ca va plus vite de ne pas faire les accents quand on tape au clavier. D'ailleurs ... mais bon, non. jm'en fous apres tout. je n'empeche personne d'ajouter les accents qu'il veut sur les lettres qu'il veut moi. Enfin, quoi qu'il en soit, ce qu'il me faut c'est une reponse a ma question et non une polemique sur un truc si derisoire, alors hop ! on chasse de son esprit toute idee parasite et on se met au boulot. Le ou la premier(e) qui m'aura fourni la bonne reponse aura gagne toute mon estime. Alors ca, si ca n'en vaut pas la peine...
-- __Pascal_Bourguignon__ http://www.informatimago.com/ Do not adjust your mind, there is a fault in reality.
david
Pascal Bourguignon wrote:
david writes:
Aussi: 192.168.100.1/24
oui :)
Comme les masques de nos jours sont le plus souvent continus (tous les bits à un à gauche, tous les bits à zéro à droite), on peut facilement indiquer un masque en ne donnant que le nombre de bits à un.
On peut aussi vouloir inférer des masques automatiquement. Par exemple, si on écrit: 10 on veut probablement dire: 10/8 mais si on écrit: 10.1 on veut probablement dire: 10.1/16 d'un autre côté: 10.0.0.0 veut probablement dire: 10/8 Donc on peut vouloir avoir une analyse particulière.
oui, oui, ouii ! franchement : MERCI, ma formulation etait un peu vaseuse, mais c'est exactement cela que je cherchais.
DONC, voila, vous avez ma reconnaissance.
Je ne connais pas de fonction "standard" pour parser ces couples adresse/masque. Il y a des fonctions pour parser des adresses IP. Il y a des bibliothèques pour manipuler les adresses IP qui contiennent peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait moi même...
oui, certes, mais parfois perilleux... (en ce qui me concerne)
Il faut aussi penser à IPv6, sinon on y arrivera jamais!
alors la par contre, je pense que ça va pouvoir attendre encore un petit peu plus.
- Je serai deja assez content si j'arrive a faire tourner le bidule en ipV4 -
D'ailleurs, pour les details, voici ce que fait le demon pour tester l'etat des stations du reseau :
il lance tout simplement un ping toute les n minutes sur l'adresse, voire les adresses cible(s).
or, je n'ai qu'une idée très floue de la structure de reseaux IPv6 (ya plus de chiffres dans l'adresse IP, non? heuu...)
alors ptet bien que ma fonction Ping n'est meme pas capable de pinguer en IPv6
Enfin, pour la satisfaire la curiosité, je me sers de ce demon pour eteindre mon serveur lorsque j'ai fini de bosser sur ma station cliente... Un des interets que peut avoir le bidule : ça marche quelque que soit l'heure à laquelle je finis (!=script cron), et qu'importe l'OS de la station cliente, tant qu'elle repond a un ping sur le reseau local : ça marche.
Pascal Bourguignon wrote:
david <nobody@free.fr> writes:
Aussi: 192.168.100.1/24
oui :)
Comme les masques de nos jours sont le plus souvent continus (tous les
bits à un à gauche, tous les bits à zéro à droite), on peut facilement
indiquer un masque en ne donnant que le nombre de bits à un.
On peut aussi vouloir inférer des masques automatiquement. Par
exemple, si on écrit: 10 on veut probablement dire: 10/8
mais si on écrit: 10.1 on veut probablement dire: 10.1/16
d'un autre côté: 10.0.0.0 veut probablement dire: 10/8
Donc on peut vouloir avoir une analyse particulière.
oui, oui, ouii !
franchement : MERCI, ma formulation etait un peu vaseuse, mais c'est
exactement cela que je cherchais.
DONC, voila, vous avez ma reconnaissance.
Je ne connais pas de fonction "standard" pour parser ces couples
adresse/masque. Il y a des fonctions pour parser des adresses IP. Il
y a des bibliothèques pour manipuler les adresses IP qui contiennent
peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait
moi même...
oui, certes, mais parfois perilleux...
(en ce qui me concerne)
Il faut aussi penser à IPv6, sinon on y arrivera jamais!
alors la par contre, je pense que ça va pouvoir attendre encore un petit
peu plus.
- Je serai deja assez content si j'arrive a faire tourner le bidule en
ipV4 -
D'ailleurs, pour les details, voici ce que fait le demon pour tester
l'etat des stations du reseau :
il lance tout simplement un ping toute les n minutes sur l'adresse,
voire les adresses cible(s).
or, je n'ai qu'une idée très floue de la structure de reseaux IPv6 (ya
plus de chiffres dans l'adresse IP, non? heuu...)
alors ptet bien que ma fonction Ping n'est meme pas capable de pinguer
en IPv6
Enfin, pour la satisfaire la curiosité, je me sers de ce demon pour
eteindre mon serveur lorsque j'ai fini de bosser sur ma station cliente...
Un des interets que peut avoir le bidule : ça marche quelque que soit
l'heure à laquelle je finis (!=script cron), et qu'importe l'OS de la
station cliente, tant qu'elle repond a un ping sur le reseau local : ça
marche.
Comme les masques de nos jours sont le plus souvent continus (tous les bits à un à gauche, tous les bits à zéro à droite), on peut facilement indiquer un masque en ne donnant que le nombre de bits à un.
On peut aussi vouloir inférer des masques automatiquement. Par exemple, si on écrit: 10 on veut probablement dire: 10/8 mais si on écrit: 10.1 on veut probablement dire: 10.1/16 d'un autre côté: 10.0.0.0 veut probablement dire: 10/8 Donc on peut vouloir avoir une analyse particulière.
oui, oui, ouii ! franchement : MERCI, ma formulation etait un peu vaseuse, mais c'est exactement cela que je cherchais.
DONC, voila, vous avez ma reconnaissance.
Je ne connais pas de fonction "standard" pour parser ces couples adresse/masque. Il y a des fonctions pour parser des adresses IP. Il y a des bibliothèques pour manipuler les adresses IP qui contiennent peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait moi même...
oui, certes, mais parfois perilleux... (en ce qui me concerne)
Il faut aussi penser à IPv6, sinon on y arrivera jamais!
alors la par contre, je pense que ça va pouvoir attendre encore un petit peu plus.
- Je serai deja assez content si j'arrive a faire tourner le bidule en ipV4 -
D'ailleurs, pour les details, voici ce que fait le demon pour tester l'etat des stations du reseau :
il lance tout simplement un ping toute les n minutes sur l'adresse, voire les adresses cible(s).
or, je n'ai qu'une idée très floue de la structure de reseaux IPv6 (ya plus de chiffres dans l'adresse IP, non? heuu...)
alors ptet bien que ma fonction Ping n'est meme pas capable de pinguer en IPv6
Enfin, pour la satisfaire la curiosité, je me sers de ce demon pour eteindre mon serveur lorsque j'ai fini de bosser sur ma station cliente... Un des interets que peut avoir le bidule : ça marche quelque que soit l'heure à laquelle je finis (!=script cron), et qu'importe l'OS de la station cliente, tant qu'elle repond a un ping sur le reseau local : ça marche.
david
Pascal Bourguignon wrote: [...]
Je ne connais pas de fonction "standard" pour parser ces couples adresse/masque. Il y a des fonctions pour parser des adresses IP. Il y a des bibliothèques pour manipuler les adresses IP qui contiennent peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait moi même...
ah, une derniere chose.
je pense que je vais écrire moi meme le code nécessaire.
Est-ce que l'idée de collaborer sur ce projet ( écriture du dit parser, voire + ) te plairait ?
Il y a un certain nombre de choses que tu sembles savoir (IPv6, etc.) et ton savoir faire (en terme de parsers) serait certainement utile.
Pascal Bourguignon wrote:
[...]
Je ne connais pas de fonction "standard" pour parser ces couples
adresse/masque. Il y a des fonctions pour parser des adresses IP. Il
y a des bibliothèques pour manipuler les adresses IP qui contiennent
peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait
moi même...
ah, une derniere chose.
je pense que je vais écrire moi meme le code nécessaire.
Est-ce que l'idée de collaborer sur ce projet ( écriture du dit parser,
voire + ) te plairait ?
Il y a un certain nombre de choses que tu sembles savoir (IPv6, etc.) et
ton savoir faire (en terme de parsers) serait certainement utile.
Je ne connais pas de fonction "standard" pour parser ces couples adresse/masque. Il y a des fonctions pour parser des adresses IP. Il y a des bibliothèques pour manipuler les adresses IP qui contiennent peut être ce que tu veux.
C'est tellement amusant d'écrire un parseur, que je l'ai toujours fait moi même...
ah, une derniere chose.
je pense que je vais écrire moi meme le code nécessaire.
Est-ce que l'idée de collaborer sur ce projet ( écriture du dit parser, voire + ) te plairait ?
Il y a un certain nombre de choses que tu sembles savoir (IPv6, etc.) et ton savoir faire (en terme de parsers) serait certainement utile.
no
On Sun, 28 Sep 2003 22:20:34 +0200, david wrote:
hello evly body
Voila : je bosse sur un projet perso & free qui touche aux reseaux TCP/IP.
Il s'agit d'un petit demon qui teste si les station d'un reseau sont 'up'.
pour le lancer, je fais :
root # eco -D -t 192.168.100.2 (le -D veut dire 'daemonize' et le -t specifie l'adresse de la cible)
et lorsque la station correspondante (station cible) a la dite adresse ne repond plus, le demon en prend bonne note et adopte un comportement adequat.
C'est ce que fait la version actuelle.
Ceci dit, mon objectif est de pouvoir tester non une seule adresse IP, mais tout un ensemble.
Ainsi, je devrais pouvoir specifier comme cible :
192.168.100.1/255.255.255.0 192.168.200.21 192.168.210.76 et etc.
Et donc, mon probleme est de trouver un algorithme efficace pour parcourir toute les adresses ainsi définies (stockees dans une variable de type chaine de caractere avec zero terminal)
voila :) la definition de ces adresses doit etre faite dans un format standard / universel.
j'imagine que ce genre de code doit etre tres courant (ah oui, je developpe ce demon sous Linux) vu tous les fichiers de config et autres scripts mentionnant des adresses / reseaux IP se trouvant sur mon systeme. C'est pourquoi il me semble qu'il a du etre etabli un algorithme optimal pour faire ce boulot, qui ne laissa pas place a quelque obscur bug et qui suivit une syntaxe universelle.
Alors s'il existe ici une personne qui puisse m'apporter quelque lumiere a ce sujet, je lui en serai extremement reconnaissant de le faire.
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà ça. Par exemple `iptable' : - http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
On Sun, 28 Sep 2003 22:20:34 +0200, david wrote:
hello evly body
Voila : je bosse sur un projet perso & free qui touche aux reseaux TCP/IP.
Il s'agit d'un petit demon qui teste si les station d'un reseau sont 'up'.
pour le lancer, je fais :
root # eco -D -t 192.168.100.2
(le -D veut dire 'daemonize' et le -t specifie l'adresse de la cible)
et lorsque la station correspondante (station cible) a la dite adresse
ne repond plus, le demon en prend bonne note et adopte un comportement
adequat.
C'est ce que fait la version actuelle.
Ceci dit, mon objectif est de pouvoir tester non une seule adresse IP,
mais tout un ensemble.
Ainsi, je devrais pouvoir specifier comme cible :
192.168.100.1/255.255.255.0
192.168.200.21
192.168.210.76
et etc.
Et donc, mon probleme est de trouver un algorithme efficace pour
parcourir toute les adresses ainsi définies (stockees dans une variable
de type chaine de caractere avec zero terminal)
voila :)
la definition de ces adresses doit etre faite dans un format standard /
universel.
j'imagine que ce genre de code doit etre tres courant (ah oui, je
developpe ce demon sous Linux) vu tous les fichiers de config et autres
scripts mentionnant des adresses / reseaux IP se trouvant sur mon systeme.
C'est pourquoi il me semble qu'il a du etre etabli un algorithme optimal
pour faire ce boulot, qui ne laissa pas place a quelque obscur bug et
qui suivit une syntaxe universelle.
Alors s'il existe ici une personne qui puisse m'apporter quelque lumiere
a ce sujet, je lui en serai extremement reconnaissant de le faire.
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà
ça. Par exemple `iptable' :
-
http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
Voila : je bosse sur un projet perso & free qui touche aux reseaux TCP/IP.
Il s'agit d'un petit demon qui teste si les station d'un reseau sont 'up'.
pour le lancer, je fais :
root # eco -D -t 192.168.100.2 (le -D veut dire 'daemonize' et le -t specifie l'adresse de la cible)
et lorsque la station correspondante (station cible) a la dite adresse ne repond plus, le demon en prend bonne note et adopte un comportement adequat.
C'est ce que fait la version actuelle.
Ceci dit, mon objectif est de pouvoir tester non une seule adresse IP, mais tout un ensemble.
Ainsi, je devrais pouvoir specifier comme cible :
192.168.100.1/255.255.255.0 192.168.200.21 192.168.210.76 et etc.
Et donc, mon probleme est de trouver un algorithme efficace pour parcourir toute les adresses ainsi définies (stockees dans une variable de type chaine de caractere avec zero terminal)
voila :) la definition de ces adresses doit etre faite dans un format standard / universel.
j'imagine que ce genre de code doit etre tres courant (ah oui, je developpe ce demon sous Linux) vu tous les fichiers de config et autres scripts mentionnant des adresses / reseaux IP se trouvant sur mon systeme. C'est pourquoi il me semble qu'il a du etre etabli un algorithme optimal pour faire ce boulot, qui ne laissa pas place a quelque obscur bug et qui suivit une syntaxe universelle.
Alors s'il existe ici une personne qui puisse m'apporter quelque lumiere a ce sujet, je lui en serai extremement reconnaissant de le faire.
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà ça. Par exemple `iptable' : - http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
david
no wrote:
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà ça. Par exemple `iptable' : - http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
oui, bin, j'ai jetté un oeil ce matin sur un truc du meme accabit et je me suis dit que ça irait plus vite si je le réécrivait.
d'ailleurs là, ça a pas mal avancé, mais ya certainement quelques petites subtilités de la syntaxe qui risquent de m'échapper n'étant pas moi meme super habitué à écrire des lignes de config pour réseaux IP.
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
qu'en est-il ?
can u help me please ??
ya t'il des pièges, etc, etc.
no wrote:
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà
ça. Par exemple `iptable' :
-
http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
oui, bin, j'ai jetté un oeil ce matin sur un truc du meme accabit et je
me suis dit que ça irait plus vite si je le réécrivait.
d'ailleurs là, ça a pas mal avancé, mais ya certainement quelques
petites subtilités de la syntaxe qui risquent de m'échapper n'étant pas
moi meme super habitué à écrire des lignes de config pour réseaux IP.
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
et si oui, de quelles adresse est constitué ce reseau ?
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà ça. Par exemple `iptable' : - http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
oui, bin, j'ai jetté un oeil ce matin sur un truc du meme accabit et je me suis dit que ça irait plus vite si je le réécrivait.
d'ailleurs là, ça a pas mal avancé, mais ya certainement quelques petites subtilités de la syntaxe qui risquent de m'échapper n'étant pas moi meme super habitué à écrire des lignes de config pour réseaux IP.
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
qu'en est-il ?
can u help me please ??
ya t'il des pièges, etc, etc.
no
On Mon, 29 Sep 2003 15:34:43 +0200, david wrote:
no wrote:
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà ça. Par exemple `iptable' : - http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
oui, bin, j'ai jetté un oeil ce matin sur un truc du meme accabit et je me suis dit que ça irait plus vite si je le réécrivait.
d'ailleurs là, ça a pas mal avancé, mais ya certainement quelques petites subtilités de la syntaxe qui risquent de m'échapper n'étant pas moi meme super habitué à écrire des lignes de config pour réseaux IP.
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
qu'en est-il ?
C'est 192.168.100.[9..14] (en ne comptant pas l'adresse du réseau 192.168.100.8 et celle de broadcast 192.168.100.15)
La réponse en détail : - http://jodies.de/ipcalc?host2.168.100.13&mask1)&mask2="
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà
ça. Par exemple `iptable' :
-
http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
oui, bin, j'ai jetté un oeil ce matin sur un truc du meme accabit et je
me suis dit que ça irait plus vite si je le réécrivait.
d'ailleurs là, ça a pas mal avancé, mais ya certainement quelques
petites subtilités de la syntaxe qui risquent de m'échapper n'étant pas
moi meme super habitué à écrire des lignes de config pour réseaux IP.
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
qu'en est-il ?
C'est 192.168.100.[9..14]
(en ne comptant pas l'adresse du réseau 192.168.100.8 et celle de
broadcast 192.168.100.15)
La réponse en détail :
- http://jodies.de/ipcalc?host2.168.100.13&mask1)&mask2="
Tu peux toujours regarder/pomper le code de programmes GPL qui font déjà ça. Par exemple `iptable' : - http://cvs.netfilter.org/netfilter/userspace/iptables.c?rev=1.59&content-type=text/x-cvsweb-markup
oui, bin, j'ai jetté un oeil ce matin sur un truc du meme accabit et je me suis dit que ça irait plus vite si je le réécrivait.
d'ailleurs là, ça a pas mal avancé, mais ya certainement quelques petites subtilités de la syntaxe qui risquent de m'échapper n'étant pas moi meme super habitué à écrire des lignes de config pour réseaux IP.
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
qu'en est-il ?
C'est 192.168.100.[9..14] (en ne comptant pas l'adresse du réseau 192.168.100.8 et celle de broadcast 192.168.100.15)
La réponse en détail : - http://jodies.de/ipcalc?host2.168.100.13&mask1)&mask2="
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
Tu bloques les 29 premiers bits, ça te laisse donc 3 bits de libre. Le 13 que tu spécifies s'écrit 00001101 en binaire, il reste donc la racine 00001000, et les 3 derniers bits peuvent varier.
Donc 192.168.100.13/29 désigne les adresses IP situées entre 192.168.100.8 et 192.168.100.15.
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- Je ne suis pas d'accord. Je ne vois pas pourquoi il faudrait savoir réfléchir pour faire des AAD. C'est du pur racisme envers les participants actuels d'un groupe bientôt défunt. -+- MH in : Guide du Neuneu d'Usenet - So live and let split -+-
On Mon, 29 Sep 2003, david wrote:
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
Oui.
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
Tu bloques les 29 premiers bits, ça te laisse donc 3 bits de libre. Le 13
que tu spécifies s'écrit 00001101 en binaire, il reste donc la racine
00001000, et les 3 derniers bits peuvent varier.
Donc 192.168.100.13/29 désigne les adresses IP situées entre 192.168.100.8
et 192.168.100.15.
--
Erwann ABALEA <erwann@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
-----
Je ne suis pas d'accord. Je ne vois pas pourquoi il faudrait savoir
réfléchir pour faire des AAD. C'est du pur racisme envers les
participants actuels d'un groupe bientôt défunt.
-+- MH in : Guide du Neuneu d'Usenet - So live and let split -+-
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
Tu bloques les 29 premiers bits, ça te laisse donc 3 bits de libre. Le 13 que tu spécifies s'écrit 00001101 en binaire, il reste donc la racine 00001000, et les 3 derniers bits peuvent varier.
Donc 192.168.100.13/29 désigne les adresses IP situées entre 192.168.100.8 et 192.168.100.15.
-- Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5 ----- Je ne suis pas d'accord. Je ne vois pas pourquoi il faudrait savoir réfléchir pour faire des AAD. C'est du pur racisme envers les participants actuels d'un groupe bientôt défunt. -+- MH in : Guide du Neuneu d'Usenet - So live and let split -+-
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
Tu bloques les 29 premiers bits, ça te laisse donc 3 bits de libre. Le 13 que tu spécifies s'écrit 00001101 en binaire, il reste donc la racine 00001000, et les 3 derniers bits peuvent varier.
Donc 192.168.100.13/29 désigne les adresses IP situées entre 192.168.100.8 et 192.168.100.15.
oui !
maintenant, quelles sont les adresses qui constituent le réseau suivant :
192.168.100.13/31
si j'applique la règle simple que j'ai déduit de ce que j'ai lu ici, ce réseau ne comporte aucune adresse qui puisse etre affectée à une station, puisque le masque de 31 bits ne laisse que 2 adresses libres qui seront assignés l'un à la diffusion l'autre à... je ne sais plus, mais bref la premiere et la dernière étant occupées il n'en reste pas de libre.
et...
192.168.100.13/32 ??
correspond-il une station ?
Erwann ABALEA wrote:
On Mon, 29 Sep 2003, david wrote:
tiens, par exemple :
est-ce que l'on peut ecrire 192.168.100.13/29 ?
Oui.
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
Tu bloques les 29 premiers bits, ça te laisse donc 3 bits de libre. Le 13
que tu spécifies s'écrit 00001101 en binaire, il reste donc la racine
00001000, et les 3 derniers bits peuvent varier.
Donc 192.168.100.13/29 désigne les adresses IP situées entre 192.168.100.8
et 192.168.100.15.
oui !
maintenant, quelles sont les adresses qui constituent le réseau suivant :
192.168.100.13/31
si j'applique la règle simple que j'ai déduit de ce que j'ai lu ici, ce
réseau ne comporte aucune adresse qui puisse etre affectée à une
station, puisque le masque de 31 bits ne laisse que 2 adresses libres
qui seront assignés l'un à la diffusion l'autre à... je ne sais plus,
mais bref la premiere et la dernière étant occupées il n'en reste pas de
libre.
et si oui, de quelles adresse est constitué ce reseau ?
(moi je pencherai pour 192.168.100.[13..21])
Tu bloques les 29 premiers bits, ça te laisse donc 3 bits de libre. Le 13 que tu spécifies s'écrit 00001101 en binaire, il reste donc la racine 00001000, et les 3 derniers bits peuvent varier.
Donc 192.168.100.13/29 désigne les adresses IP situées entre 192.168.100.8 et 192.168.100.15.
oui !
maintenant, quelles sont les adresses qui constituent le réseau suivant :
192.168.100.13/31
si j'applique la règle simple que j'ai déduit de ce que j'ai lu ici, ce réseau ne comporte aucune adresse qui puisse etre affectée à une station, puisque le masque de 31 bits ne laisse que 2 adresses libres qui seront assignés l'un à la diffusion l'autre à... je ne sais plus, mais bref la premiere et la dernière étant occupées il n'en reste pas de libre.
et...
192.168.100.13/32 ??
correspond-il une station ?
Daniel Déchelotte
| maintenant, quelles sont les adresses qui constituent le réseau suivant : | 192.168.100.13/31 | [...] et... | 192.168.100.13/32 ?? | correspond-il une station ?
Je te conseille de ne pas considerer tout de suite les cas pathologiques et de commencer avec un code qui sait gerer, au moins, les masques de 8, 16 et 24 bits. Ensuite, tu verras comment il se comporte pour les cas moins courants : peut-etre qu'il aura d'emblee un comportement acceptable (probable a moins que tu n'aies code en dur le fait qu'un masque avait "forcement" une longueur multiple de 8 bits), peut-etre qu'il faudra le modifier pour qu'il gere certains cas extremes. Commence par faire simple.
Daniel, -- http://yo.dan.free.fr/
| maintenant, quelles sont les adresses qui constituent le réseau suivant :
| 192.168.100.13/31
| [...] et...
| 192.168.100.13/32 ??
| correspond-il une station ?
Je te conseille de ne pas considerer tout de suite les cas pathologiques
et de commencer avec un code qui sait gerer, au moins, les masques de 8,
16 et 24 bits. Ensuite, tu verras comment il se comporte pour les cas
moins courants : peut-etre qu'il aura d'emblee un comportement acceptable
(probable a moins que tu n'aies code en dur le fait qu'un masque avait
"forcement" une longueur multiple de 8 bits), peut-etre qu'il faudra le
modifier pour qu'il gere certains cas extremes. Commence par faire simple.
| maintenant, quelles sont les adresses qui constituent le réseau suivant : | 192.168.100.13/31 | [...] et... | 192.168.100.13/32 ?? | correspond-il une station ?
Je te conseille de ne pas considerer tout de suite les cas pathologiques et de commencer avec un code qui sait gerer, au moins, les masques de 8, 16 et 24 bits. Ensuite, tu verras comment il se comporte pour les cas moins courants : peut-etre qu'il aura d'emblee un comportement acceptable (probable a moins que tu n'aies code en dur le fait qu'un masque avait "forcement" une longueur multiple de 8 bits), peut-etre qu'il faudra le modifier pour qu'il gere certains cas extremes. Commence par faire simple.