2011-06-15 12 views
7

मेरे पास सी में लिखा गया कोड है। मैं सी कोड जानकारी का उपयोग करना चाहता हूं जो रूटिंग तालिका में संग्रहीत है। क्या यह संभव है?क्या मैं सिस्टम() कमांड के बिना सी में रूटिंग टेबल को पढ़/लिख सकता हूं?

+4

आपको लगता है कि 'मार्ग' कमांड क्या करता है यदि यह असंभव है? –

+2

@Vlad शायद यह perl का उपयोग करता है :- डी – RedX

उत्तर

4

आप नेटलिंक सॉकेट खोल सकते हैं और रूट अपडेट संदेश भेज सकते हैं। ऐसा करने के तरीके के बारे में an article है।

+0

एक बार जब मैंने गेट्रॉउट संदेश भेजा है, तो मुझे नहीं पता कि उत्तर में कौन सी संरचना होगी, कोई मदद? – JuliandotNut

8

आप यह देखने के लिए कि route कमांड कैसे करता है, आप "स्ट्रेस रूट एड ..." भी चला सकते हैं।

मेरे सिस्टम पर, यह SIOCADDRT के साथ उपयोग करता है। एक छोटी सी खोज कुछ sample code बदल जाती है।

विचित्र रूप से, मैंने पाया है कि सबसे अच्छा दस्तावेज IBM's AS400 man pages से है।

यदि आप केवल रूटिंग तालिका पढ़ना चाहते हैं, तो आप /proc/net/route खोल और पढ़ सकते हैं। (फिर, strace दिखाता है कि इस प्रकार route कमांड करता है।) हेक्स संख्या मशीन-एंडियन रूप में 32-बिट आईपी पते हैं। cat /proc/net/route आज़माएं।

+0

ioctl को रूट से पूछताछ करने का विकल्प नहीं दिखता है। SIOCADDRT कर्नेल तालिका में लिखता है। मुझे बस – cateof

+1

पढ़ने की जरूरत है आपके प्रश्न का शीर्षक "संशोधित" कहता है। – Nemo

+0

@cateof: मैंने अपना जवाब अपडेट कर दिया है। – Nemo

1

यदि आप केवल रूटिंग तालिका से पूछना चाहते हैं, तो फ़ाइल /proc/net/route फ़ाइल को पढ़ने का प्रयास करें। यह मेरे सिस्टम में काम करता है।

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