2009-04-15 6 views
6

J'écris un démon fonctionnant sur une plate-forme intégrée qui doit changer l'itinéraire par défaut du périphérique en fonction de l'interface à laquelle il se connecte à un moment donné. Comment puis-je faire cela par programme? Je sais que je peux utiliser le système ("route del default & & route ajouter la passerelle par défaut blah"); etc mais y a-t-il un moyen plus direct? MISE À JOUR: J'ai résolu mon problème particulier en découvrant un correctif à pppd qui permet une option de remplacementfaitefaite. Le correctif inclut également du code pour la modification par programmation de la table de routage. Il est inclus dans ce rapport de bug gentoo http://bugs.gentoo.org/227321Comment modifier la table de routage par programmation

Répondre

7

Découvrez SIOCADDRT/SIOCDELRT ioctl (Stevens' "Unix Network Programming" serait une bonne référence.)

+1

Génial, j'obtiens un accès au niveau du shell ou je dois analyser/proc/net/route et utiliser des ioctls! Je suppose que je peux extraire du code d'autres projets. Actuellement en train de regarder comment pppd le fait. – MattSmith

0

Je recommande d'utiliser simplement cette commande de routage. Thats ce qu'il est là pour, et toute autre chose sera juste un hack.

1

Je tapé

man route 

parce que je sais que parfois je peux obtenir un indice dans le " voir aussi "section pour savoir comment faire la même chose par programme. J'ai vu qu'il y avait une page d'homme à la page 4 pour "route" (route (4) était dans la section voir aussi). Donc essayé

man 4 route 

et il semblait prometteur de faire ce que la commande route peut faire par programmation.

Remarque Je viens de remarquer que ceci est uniquement pour les systèmes BSD. Voici une URL avec la page de manuel http://www.manpagez.com/man/4/route/. Cela peut ou peut ne pas être utile. Peut-être que vous pouvez google certaines des choses ici et ajouter le mot "Linux".

+0

J'ai l'homme route mais pas homme 4 route. Pouvez-vous me dire quelle bibliothèque ou quel fichier d'en-tête j'ai besoin? – MattSmith

+0

Vous avez raison, ma faute. Je vérifiais sur un système BSD. Est-ce que votre route homme a un "voir aussi" qui semble prometteur du tout? –

+0

Il serait pratique comme il semble sur Linux que vous devez utiliser ioctls et analyser la table de routage dans/proc – MattSmith

Questions connexes