Forum Programmation.c IP Routing

Posté par  (site web personnel) .
Étiquettes : aucune
0
29
oct.
2007
Bonjour à tous,

Je cherche désespérément des indications concernant le routage Ip avec le langage C, je cherche en fait à sauvegarder et à restaurer la table de routage d'une machine.

Quelqu'un à déjà manipulé les tables de routage dans ce langage ?

Merci d'avance pour les liens ou toutes indications
  • # rtnetlink

    Posté par  . Évalué à 3.

    (Quand on sait ce qu'on cherche c'est plus facile...)

    Quelques liens :
    http://www.linuxjournal.com/article/8498
    http://wlug.org.nz/LinuxNetlinkSocketExample
    • [^] # Re: rtnetlink

      Posté par  (site web personnel) . Évalué à 2.

      Super merci

      (Quand on sait ce qu'on cherche c'est plus facile...)

      Effectivement moi qui ne suis pas dev à chaque fois je galère pour trouver les bonnes librairies, ou bien je réinvente parfois la roue ...
  • # sauvegarder / restaurer /proc/net/route ?

    Posté par  . Évalué à 1.

    D'après la doc (man), les routes sont stockées dans /proc/net/route

    Il est probablement possible de sauvegarder et restaurer ce fichier.

    Si quelqu'un a une machine dispo sous la main pour tester, le résultat m'intéresse !
    • [^] # Re: sauvegarder / restaurer /proc/net/route ?

      Posté par  (site web personnel) . Évalué à 1.

      Sur koders.com si tu recherches "/proc/net/route" tu trouves quelques exemples de traitement

      Par contre je ne suis pas certain qu'une simple opération en écriture sur ce fichier sois apprécié par l'OS ...

      Un test simple de vidage du fichier
      > /proc/net/route ne fonctionne pas

      D'ailleurs, du coup, je me pose une autre question, il existe une commande permettant de vider complètement sa table de routage ? sans démonter/monter l'interface ?
      • [^] # Re: sauvegarder / restaurer /proc/net/route ?

        Posté par  . Évalué à 2.

        route flush ou un truc du genre ?

        Man route devrait répondre (ca existe sur plein d'OS ....)·
        • [^] # Re: sauvegarder / restaurer /proc/net/route ?

          Posté par  (site web personnel) . Évalué à 1.

          Non justement, je n'ai rien trouvé (du moins sous linux), mais j'ai peut-être mal cherché ...

          Il existe bien la commande ip
          ip route flush all

          Mais ma carte réseau refuse ensuite de fonctionner (je suis obligé de la relancer), la commande enlève même les routes par défaut

          Table de routage IP du noyau
          Destination Passerelle Genmask Indic Metric Ref Use Iface
          10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

          Avec ip route flush all
          Table de routage IP du noyau
          Destination Passerelle Genmask Indic Metric Ref Use Iface

          Et je ne peux plus ajouter aucune route
          • [^] # Re: sauvegarder / restaurer /proc/net/route ?

            Posté par  . Évalué à 1.

            tu utilises quelle distro ? sinon ip route flush cache / all va effectivement effacer les tables de routage quand au fait que tes cartes reseau ne fonctionnent plus apres cela vient certainement du fait que du meme coup du a supprimé la table de la carte lo !!,
            essaye cette commande apres avoir flasher toutes les tables

            ip route add 127.0.0.0/8 dev lo src 127.0.0.1

            tu devrait retrouver uen connexion ensuite,
            sinon pour faire bref si tu veux uniquement sauvegarder la table de routage a un instant T alors sauvegarde /proc/net/rt_cache et /proc/net/route
            • [^] # Re: sauvegarder / restaurer /proc/net/route ?

              Posté par  (site web personnel) . Évalué à 1.

              Une mandriva 2007.1 pour ce test

              Oui, oui j'ai bien testé cette manip, mais ensuite impossible de rajouter la moindre route

              Table de routage IP du noyau
              Destination Passerelle Genmask Indic Metric Ref Use Iface
              127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
              [root@Fredinux Desktop]./myroute
              SIOCADDRT: Le réseau n'est pas accessible.

              C'est pas grave c'était par curiosité merci quand même
  • # Apprendre par l'exemple

    Posté par  (site web personnel) . Évalué à 2.

    Déja j'imagine que tu s sous linux vu que c'est différent pour chaque noyau.

    Ensuite, rien de tel qu'un exemple pour apprendre et pour comprendre.
    Donc je te conseille simplement apt-get source iproute2. En plus tu auras un certain nombre d'exemple ou de lib pret a copier/coller.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.