Ramki odebrane przez kartę sieciową będą obsługiwane przez sterownik, a następnie przekazywane do wyższej warstwy stosu protokołów przez jądro Linux.Jak zapobiec przekazywaniu pakietów przez jądro do warstwy sieci?
Czy istnieje prosty sposób, aby zapobiec przekazywaniu pakietów przez jądro do warstwy sieciowej? Aby móc odbierać ramki z warstwy łącza danych i obsłużyć wszystkie pakiety samodzielnie (być może programy warstwy aplikacji byłyby przepisywane)?
Myślę, że konieczna jest ponowna kompilacja jądra, czy należy to zrobić, modyfikując kod w softirq lub funkcje takie jak netif_rx czy kolejki list na procesora?
W rzeczywistości niektórzy koledzy z klasy i ja próbujemy wdrożyć uproszczoną wersję stosu protokołów TCP/IP w przestrzeni użytkownika dla ćwiczeń, i właśnie zaczęliśmy. Czytam książki takie jak UNP, APUE2, TCP/IP ilustrowane v1, v2, architektura sieciowa Linuksa, kod źródłowy Linux i tak dalej. Mam inne problemy, czy muszę zadać kolejne pytanie?
Co chcesz zrobić? Zmiana jądra może nie być taka prosta. – prehistoricpenguin
Naprawdę powinieneś opisać problem, który próbujesz rozwiązać. Jedna z poniższych odpowiedzi sugeruje filtr netfiltra. Inną opcją może być użycie biblioteki pcap do bezpośredniego uzyskania pakietów surowych. Nie będziemy wiedzieli, jaka jest właściwa odpowiedź, dopóki nie dowiemy się, jaki problem próbujesz rozwiązać. – chetan
Edytowałem moje pytanie i naprawdę oczekuję dalszych sugestii. –