NLLINK

2015-05-21 3 views
12

का उपयोग कर वीएलएएन जानकारी आपको वीएलएएन जानकारी कैसे मिलती है जैसे सीएलएएन उप इंटरफ़ेस को कर्नेल से उपयोगकर्ता में सीईटी में एनईटीLINK सॉकेट का उपयोग करते हुए?NLLINK

मैंने टिप्पणियों में सुझाए गए अनुसार .NETLINK आदमी में थोड़ा अध्ययन नहीं किया। मैंने एक वीएलएएन उप इंटरफ़ेस जोड़ा और हटा दिया और नेटलिंक सॉकेट प्रोग्राम का उपयोग करके निगरानी की। & प्रत्येक प्राप्त 3 संदेशों को हटाने के लिए। अतिरिक्त 3 संदेश भेजता है संदेश और हटाना 2 NEWLINK & 1 DELLINK संदेश भेजता है। ऐसा क्यों हैं?

नई VLAN इंटरफ़ेस eth1.75 के अलावा के लिए:

RTM_NEWLINK Link eth2.75 Down 
RTM_NEWLINK Link eth2 Up 
RTM_NEWLINK Link eth2.75 Up 

VLAN इंटरफ़ेस eth2.75 का विलोपन के लिए:

RTM_NEWLINK Link eth2 Up 
RTM_NEWLINK Link eth2.75 Down 
RTM_DELLINK eth2.75 
+0

छोटे व्याकरण ठीक। –

+2

मैन पेज पढ़ें और जब आप एक विशिष्ट प्रश्न पर फंस गए हों तो वापस आएं। 'मैन 7 नेटलिंक' और फिर 'मैन 7 आरटीनेटलिंक' के साथ शुरू करें। मुझे लगता है * आपको हटाने के लिए 'RTM_NEWLINK' और' RTM_DELINK' प्राप्त करने के लिए 'मिलेगा। उदाहरण के लिए [नेटवर्क प्रबंधक] (https://download.gnome.org/sources/NetworkManager/1.0/) के लिए स्रोत कोड देखें। –

उत्तर

4

एक नेटलिंक सॉकेट बनाने है, यह 3 उपकरणों को बनाने। यही कारण है कि आप 3 घटनाएं प्राप्त करते हैं। add ईवेंट के दौरान यह 3 डिवाइस बनाता है।

  • नेटवर्क उपप्रणाली।
  • कतार उपप्रणाली भेजना।
  • कतार उपप्रणाली प्राप्त करना।

net उपप्रणाली ऊपरी स्तर नियंत्रण डिवाइस है। डेटा को सौंपने के लिए अन्य दो queues हैं। आप इसे नीचे के रूप में सत्यापित कर सकते हैं।

जब मैं एक udevadm monitor --env करते हैं और एक VLAN मैं गिरी से निम्न इवेंट मिल बनाने के लिए:

UDEV [305215.045416] add  /devices/virtual/net/vpn0 (net) 
ACTION=add 
DEVPATH=/devices/virtual/net/vpn0 
ID_MM_CANDIDATE=1 
IFINDEX=10 
INTERFACE=vpn0 
SEQNUM=3665 
SUBSYSTEM=net 
USEC_INITIALIZED=5215023319 

UDEV [305215.046658] add  /devices/virtual/net/vpn0/queues/rx-0 (queues) 
ACTION=add 
DEVPATH=/devices/virtual/net/vpn0/queues/rx-0 
SEQNUM=3666 
SUBSYSTEM=queues 
USEC_INITIALIZED=15044665 

UDEV [305215.047628] add  /devices/virtual/net/vpn0/queues/tx-0 (queues) 
ACTION=add 
DEVPATH=/devices/virtual/net/vpn0/queues/tx-0 
SEQNUM=3667 
SUBSYSTEM=queues 
USEC_INITIALIZED=5215044729 
1

RTM_NEWLINK संदेशों netdev_state_change से, एक अंतरफलक राज्य में हर बदलाव के लिए भेजा जाता है आम तौर पर (देखें: http://lxr.free-electrons.com/source/net/core/dev.c#L1226)।

असल में, "एक नया इंटरफ़ेस बनाया गया" की बजाय RTM_NEWLINK को "एक इंटरफ़ेस बदल गया राज्य" के रूप में सोचें।

उदाहरण के लिए, VLAN इंटरफेस के अलावा के लिए आपको मिलता है: नीचे राज्य में एक नए इंटरफ़ेस eth2.75 की

  1. अधिसूचना
  2. अंतर्निहित भौतिक इंटरफ़ेस eth2 के राज्य के सूचना (अब यह एक है "अधीनस्थ" इंटरफ़ेस जिसमें पहले नहीं था - उदाहरण के लिए कुछ एनआईसी कार्डों में अवांछित वीएलएएन टैग फ़िल्टर करने के लिए एचडब्ल्यू ऑफ़लोड है। इंटरफ़ेस को अब एनआईसी इत्यादि को अपडेट करने की आवश्यकता हो सकती है)। eth2 यूपी राज्य में है और ऐसा ही रहता है - लेकिन इसकी आंतरिक स्थिति बदल गई।
  3. अधिसूचना कि eth2.75 नीचे से यूपी राज्य में गया था।

एक इसी तरह के लिए हटाना आप देखते हैं:

  1. eth2 स्थिति परिवर्तन (eth2.75 से अलग कर और VLAN)
  2. eth2.75 की अधिसूचना उत्तर प्रदेश से नीचे जाने की अधिसूचना राज्य
  3. eth2 को हटाने की अधिसूचना।75 इंटरफ़ेस