
Beacon Object Files (BOFs) लिखने के लिए एक Rust टेम्पलेट
यह प्रोजेक्ट पूर्ण no_std समर्थन के साथ Rust का उपयोग करके BOFs के विकास को सक्षम बनाता है। यह Rust की सुरक्षा सुविधाओं और आधुनिक टूलिंग का लाभ उठाता है, साथ ही छोटे और कुशल COFF ऑब्जेक्ट तैयार करता है।
यह फ्रेमवर्क BOF विकास के लिए आवश्यक सब कुछ प्रदान करता है। बिल्ड प्रक्रिया आपके कोड को एक स्टैटिक लाइब्रेरी में संकलित करती है, जिसे boflink फिर उचित रिलोकेशन और Beacon की डायनेमिक फंक्शन रिज़ॉल्यूशन के लिए इम्पोर्ट्स के साथ एक COFF ऑब्जेक्ट में लिंक करता है।
आरंभ करने का सबसे आसान तरीका cargo-generate के साथ प्रोजेक्ट टेम्पलेट का उपयोग करना है। यह सभी आवश्यक कॉन्फ़िगरेशन के साथ एक नया BOF प्रोजेक्ट तैयार करेगा:
cargo generate --git https://github.com/joaoviictorti/rustbof .template
cd <project-name>
cargo make
वैकल्पिक रूप से, आप रिपॉज़िटरी को क्लोन कर सकते हैं और examples/ निर्देशिका का अन्वेषण कर सकते हैं, जिसमें विभिन्न उपयोग मामलों को प्रदर्शित करने वाले कार्यशील BOF इम्प्लीमेंटेशन शामिल हैं। ये उदाहरण आपके स्वयं के BOFs बनाने के लिए व्यावहारिक संदर्भ के रूप में कार्य करते हैं।
git clone https://github.com/joaoviictorti/rustbof
cd rustbof/examples/whoami
cargo make
आप टूलचेन को स्थानीय रूप से इंस्टॉल किए बिना बिल्ड करने के लिए Docker का भी उपयोग कर सकते हैं:
git clone https://github.com/joaoviictorti/rustbof
cd rustbof
docker build -t rustbof .
docker run -it rustbof
#[rustbof::main] एट्रिब्यूट मैक्रो BOF लोडर्स के लिए आवश्यक एंट्री पॉइंट उत्पन्न करता है। आपका मुख्य फंक्शन बिना तर्कों के सरल हो सकता है, या पार्सिंग के लिए रॉ आर्ग्युमेंट डेटा प्राप्त कर सकता है।
एक बुनियादी BOF जो संदेश प्रिंट करता है:
#![no_std]
use rustbof::println;
#[rustbof::main]
fn main() {
println!("Hello from Rust BOF!");
}
उन BOFs के लिए जिन्हें तर्क प्राप्त करने की आवश्यकता है, रॉ आर्ग्युमेंट बफर से टाइप किए गए मान निकालने के लिए DataParser का उपयोग करें:
#![no_std]
use rustbof::println;
use rustbof::data::DataParser;
#[rustbof::main]
fn main(args: *mut u8, len: usize) {
let mut parser = DataParser::new(args, len);
let name = parser.get_str();
println!("Hello, {name}!");
}
examples निर्देशिका में कार्यशील BOFs शामिल हैं: whoami, ipconfig और env।
rustbof निम्नलिखित में से किसी एक के अंतर्गत लाइसेंस प्राप्त है
आपकी पसंद के अनुसार।
जब तक आप स्पष्ट रूप से अन्यथा न कहें, Apache-2.0 लाइसेंस में परिभाषित अनुसार, rustbof में शामिल करने के लिए आपके द्वारा जानबूझकर प्रस्तुत किया गया कोई भी योगदान, बिना किसी अतिरिक्त शर्तों या नियमों के, उपरोक्त अनुसार दोहरे लाइसेंस के अधीन होगा।