मैं एक रूटर द्वारा भेजे गए नेटफ्लो रिकॉर्ड को इकट्ठा करने के लिए jnca लाइब्रेरी का उपयोग कर रहा हूं । राउटर द्वारा भेजे गए नेटफ्लो रिकॉर्ड का संस्करण 9 संस्करण है।
जब नेटफ्लो पैकेट को Wireshark से देखा जाता है तो टेम्पलेट id 263 के साथ प्रवाह सेट में आरंभकर्ता ओकटेट और रिस्पोंडर ओकटेट्स के बारे में डेटा होता है जो प्रवाह के साथ जुड़े बाइट्स की संख्या निर्धारित करने के लिए उपयोग किया जा सकता है।
लेकिन समस्या यह है कि इन मूल्यों को jcna द्वारा प्राप्त नहीं किया जा सकता है। यह ऑक्टेट्स के लिए हमेशा शून्य दिखाता है।
currOffset = t.getTypeOffset(FieldDefinition.InBYTES_32);
currLen = t.getTypeLen(FieldDefinition.InBYTES_32);
if (currOffset >= 0 && currLen > 0) {
dOctets = Util.to_number(buf, off + currOffset, currLen) * t.getSamplingRate();
}
यह कोड सेगमेंट है जिसका उपयोग डीओक्टेट्स प्राप्त करने के लिए किया जाता है। यह टेम्पलेट ID 263 के लिए भी शून्य देता है।
लेकिन जब नेटफ्लो टेम्प्लेट आईडी 263 के संबंध में इसकी गणना की जाती है तो यह सही डेटा देता है। (सर्जक अष्टक देता है और उत्तर प्राप्त करने के लिए अष्टक 46 को 50 के साथ प्रतिस्थापित किया जाना चाहिए क्योंकि विशेष रिकॉर्ड की लंबाई बाइट्स है)
dOctets = Util.to_number(buf, off + 46, 4)
46 वह जगह है जहाँ पहल ऑक्टेट्स रिकॉर्ड है कि विशेष रूप से NetFlow पैकेट में निहित है। (Wireshark रिकॉर्ड का उपयोग करके मिला है।)
यह jnca के साथ एक समस्या है? उम्मीद है, जेसीएन से परिचित कोई मुझे इस पर कुछ मदद दे सकता है।
getTypeOffset
और getTypeLen
?
Template.getTypeOffset()
सापेक्ष दिखाई देते हैं। क्या आप जो कर रहे हैं उसके साथ यह काम करता है? (आपने यह बताने के लिए पर्याप्त कोड नहीं दिखाया buf
? क्या है ?)
java.util.Properties
निम्न स्तर के प्रारूप में कड़ाई से टाइप किया गया कोड? कक्षा से परमाणु। क्या इस पुस्तकालय के लिखे जाने के समय जावा में जेनेरिक नहीं था?