2009-04-15 9 views
6

मैं एम्बेडेड प्लेटफ़ॉर्म पर चल रहे एक डिमन लिख रहा हूं जिसे डिवाइस के डिफ़ॉल्ट मार्ग को बदलने की आवश्यकता है, जिसके अनुसार यह किसी दिए गए समय पर इंटरफ़ेस से कनेक्ट हो रहा है। मैं इसे प्रोग्रामिक तरीके से कैसे कर सकता हूं? मुझे पता है कि मैं सिस्टम का उपयोग कर सकता हूं ("रूट डेल डिफ़ॉल्ट & & रूट डिफ़ॉल्ट गेटवे ब्लाह जोड़ें"); आदि लेकिन क्या एक और सीधा तरीका है?रूटिंग तालिका को प्रोग्रामेटिक रूप से संपादित करने के लिए कैसे करें

अद्यतन: मैंने पीपीडीडी को पैच खोजने के द्वारा अपनी विशेष समस्या हल की है जो एक प्रतिस्थापित अपरिवर्तनीय विकल्प की अनुमति देता है। पैच में रूटिंग तालिका को प्रोग्रामेटिक रूप से संशोधित करने के लिए कोड भी शामिल है। यह इस gentoo बग रिपोर्ट http://bugs.gentoo.org/227321

उत्तर

7

SIOCADDRT/SIOCDELRT ioctls बाहर की जाँच करें (स्टीवंस के "यूनिक्स नेटवर्क प्रोग्रामिंग" एक अच्छा संदर्भ होगा।)

+1

बहुत बढ़िया, मुझे या तो खोल स्तर का उपयोग मिलता है या मुझे पार्स/प्रो/नेट/रूट करना होगा और ioctls का उपयोग करना होगा! मुझे लगता है कि मैं अन्य परियोजनाओं से कुछ कोड पिस सकता हूं। वर्तमान में यह देख रहा है कि पीपीडीडी कैसे करता है। – MattSmith

0

में शामिल है, मैं केवल उस रूट कमांड का उपयोग करने की अनुशंसा करता हूं। यह है कि यह क्या है, और कुछ और सिर्फ एक हैक होगा।

1

मैं टाइप किया

man route 

कारण मैं कभी कभी पता है कि मैं में एक संकेत प्राप्त कर सकते हैं " प्रोग्रामिंग के समान काम करने के लिए "अनुभाग भी देखें। मैंने देखा कि "मार्ग" के लिए पृष्ठ 4 पर एक पृष्ठ पृष्ठ था (मार्ग (4) भी अनुभाग में था)। तो

man 4 route 

और ऐसा करने के लिए वादा किया गया कि मार्ग कमांड प्रोग्रामेटिक रूप से क्या कर सकता है।

नोट मैंने देखा कि यह केवल बीएसडी सिस्टम के लिए है। यहां मैनपेज http://www.manpagez.com/man/4/route/ वाला URL है। यह सहायक हो सकता है या नहीं भी हो सकता है। हो सकता है कि आप यहां कुछ सामानों को Google पर डाल सकें और "लिनक्स" शब्द जोड़ सकें।

+0

मेरे पास मैन रूट है लेकिन मैन 4 रूट नहीं है। क्या आप मुझे बता सकते हैं कि मुझे कौन सी लाइब्रेरी या हेडर फ़ाइल चाहिए? – MattSmith

+0

आप सही हैं, मेरी गलती है। मैं एक बीएसडी प्रणाली पर जांच कर रहा था। क्या आपके आदमी मार्ग में "यह भी देखें" है जो बिल्कुल वादा करता है? –

+0

यह आसान होगा क्योंकि यह लिनक्स पर दिखाई देता है, आपको ioctls का उपयोग करना होगा और रूट तालिका को/proc में पार्स करना होगा – MattSmith

संबंधित मुद्दे

 संबंधित मुद्दे