लिनक्स पर, सी का उपयोग करके, मैं पुल डिवाइस का नाम ढूंढ सकता हूं जो मेरा ईथरनेट इंटरफ़ेस से जुड़ा हुआ है? क्या ioctl()
कॉल का अनुक्रम है जो मुझे मास्टर पुल डिवाइस खोजने की आवश्यकता है?सी में मेरे टैप एडाप्टर के लिए पुल डिवाइस का नाम मैं कैसे ढूंढ सकता हूं?
मेरे सी कार्यक्रम के एक विन्यास फाइल से मेरी नल अनुकूलक के उपकरण नाम (इस मामले, tap0
में) को जानता है। आखिरकार, मुझे आईपी पता चाहिए कि मेरा टीएपी एडाप्टर जवाब दे। क्योंकि यह ब्रिज किया गया है, टीएपी एडाप्टर में आईपी पता नहीं है; यह bridge
डिवाइस है जिसमें आईपी पता है।
मैं एक नल डिवाइस और VETH डिवाइस एक साथ पाट की है।
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 500
link/ether 22:d4:fa:a4:89:81 brd ff:ff:ff:ff:ff:ff
3: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 22:8c:ee:b8:e3:30 brd ff:ff:ff:ff:ff:ff
inet 10.20.30.40/24 scope global br0
valid_lft forever preferred_lft forever
45: veth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
link/ether 22:8c:ee:b8:e3:30 brd ff:ff:ff:ff:ff:ff
नोट tap0
और veth0
प्रविष्टियों: ip a
निम्नलिखित चलता उनके पुल मास्टर से प्रत्येक br0
है (यानी, वे पुल master br0
है)।
जब मैं फोन ioctl(SIOCGIFFLAGS)
, और बाद में ioctl(SIOCGIFPFLAGS)
जब ifr_name
tap0
है, केवल झंडे सेट कर रहे हैं कि IFF_UP
और IFF_BROADCAST
हैं। मैं यहां से कहां से जाना चाहता हूं।
आप @stark कि पार्स करने 'आईपी A' से कम वांछनीय है' brctl show' – stark
के उत्पादन को पार्स सकता है। यह 'पुल-यूटिल्स' पैकेज स्थापित करने की आवश्यकता को लागू करता है। सभी ब्रिजिंग केवल 'iproute2' सूट का उपयोग करके स्थापित की गई थीं। – scottbb
आप 'आईपी ए' पर 'स्ट्रेस' का उपयोग करने का प्रयास कर सकते हैं और देख सकते हैं कि यह क्या करता है। –