Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Dodać łatkę do iproute, coby powstał odpowiedni cel w poleceniu tc.
Sznurek:
https://github.com/pcduino/OpenWrt-pcDuino/blob/mas … onnmark.patch
A potem użyć ten cel connmark (czy jak się nazywa) zamiast fwmark.
Ostatnio edytowany przez Jacekalex (2014-08-05 19:00:36)
Offline
Na iproute2 też łata weszła bez problemu i paczka się zbudowała.
Co do fwmark to chyba w poleceniu ip, a nie tc. Przecie te pakiety w tc w oparciu o marki to łapie się przy pomocy linijek typu:
tc filter add dev ifb0 protocol ip parent 1:0 prio 5 handle 2 fw classid 1:200
Ten handle 2 to mark 2. Także nie mam zielonego pojęcia jak to się ma do tc i co gdzie teraz dopisać. xD
Offline
Spróbuj na eth0 ingress użyć tc, i tam użyć tego connmark w miejsce fw.
Dokumentacji łatki nie widziałem jeszcze, ale masz kod łatki, także coś tam wykombinujesz. ;)
EDIT:
W samej łatce jest dokumentacja:
+ fprintf(stderr, "Usage: ... connmark\n");
;)
Ostatnio edytowany przez Jacekalex (2014-08-05 19:46:48)
Offline
Ja aktualnie korzystam z sektorów u32 i filtrów mieszących, więc mi pasuje. Będzie super jak zamiast imq będzie mi działo z ifb, nie będzie trzeba czekać na nowego patch imq.
Jest sens zakładania łatki gre dla serwera, który robi nata i dzieli łączę i nic poza tym?
Offline
Tak z funkcjonalności jest to router ale fizycznie server :D
Offline
No a czemu po założeniu łaty nie widzi tego filtra? xD
Z tego "mana" w łacie można wyczytać coś w stylu:
fprintf(stderr, "Usage: ... connmark\n");
To przypomina trochę:
# tc filter add fw help
Usage: ... fw [ classid CLASSID ] [ police POLICE_SPEC ]
POLICE_SPEC := ... look at TBF
CLASSID := X:Y
NOTE: CLASSID is parsed as hexadecimal input.
Problem w tym, że
# tc filter add connmark help Unknown filter "connmark", hence option "help" is unparsable
Czyli wygląda jakby ta łata nic nie robiła. :]
Offline
Poszukaj na forum/liście_mailingowej Openwrt.
Względnie
strace -f tc
i patrzysz, gdzie szuka modułu, na jakim wywołaniu się wykłada ,
i czemu modułu nie potrafi znaleźć.
Ja do tc nie doszedłem, bo mi się nie chce wracać na jajo 3.14, a na 3.15.6 i nowszych łatka na jajo się nie kompiluje na razie.
EDIT:
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [1048576], 4) = 0
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=2292, groups=00000000}, [12]) = 0
open("/lib64/tc//f_connmark.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "Unknown filter \"connmark\", hence"..., 61Unknown filter "connmark", hence option "help" is unparsable
) = 61
Masz tą bibliotekę, o którą woła w wytłuszczeniu?
Jeśli jej nie ma, to trzeba będzie trochę przepytać autora łatki.
Łatka jest chyba na jakąś zabytkową wersję iproute, u mnie się z tą łątką skompilował grzecznie, ale biblioteki czy funkcji ani śladu.
Ostatnio edytowany przez Jacekalex (2014-08-07 12:11:42)
Offline
Właśnie odpaliłem:
root:~# strace tc filter add connmark help
I mi wyrzucił:
.... open("/usr/lib/tc//f_connmark.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
A w tym katalogu tylko:
root:/usr/lib/tc# ls -al total 164K drwxr-xr-x 2 root root 4.0K Aug 5 22:25 ./ drwxr-xr-x 148 root root 36K Aug 6 21:52 ../ -rw-r--r-- 1 root root 23K Aug 5 22:22 experimental.dist lrwxrwxrwx 1 root root 7 Aug 5 22:23 m_ipt.so -> m_xt.so -rw-r--r-- 1 root root 11K Aug 5 22:23 m_xt.so -rw-r--r-- 1 root root 24K Aug 5 22:22 normal.dist -rw-r--r-- 1 root root 24K Aug 5 22:22 pareto.dist -rw-r--r-- 1 root root 23K Aug 5 22:22 paretonormal.dist -rw-r--r-- 1 root root 9.6K Aug 5 22:23 q_atm.so
Także chyba dupa z tego patcha. :]
Offline
Do autora łatki napisać nie potrafisz?
Ta łatka to praktycznie bliźniak modułu fw, powinna wyglądać podobnie.
Tylko że łatka na jajo 3.14 jakoś wyszła niedawno, a ta łatka na iproute jest z 2011, od tego czasu pewnie sporo się zmieniło w kodzie.
Krótko pisząc, trzeba by zapukać do autora łatki, masz maila w źródełku.
Offline
morfik napisał(-a):
Napisałem zanim posłałem tutaj tego poprzedniego posta. Ja tylko stwierdziłem fakt. xD
To teraz trzeba troszkę poczekać, a w razie czego w sprawie łatki do iproute zapukać do Aleksieja Kuzniecowa, autora modułu fw.
Zastanawiam się tylko, jak zapukać skutecznie na LKML, żeby w jaju i w iproute connmark był OTB, a nie w jakichś łatkach, które raz działają, a trzy razy nie.
Offline
Rozwiązanie problemu "hunks FAILED" przy nakładaniu patcha IMQ na standardowy kernel 3.2 w debianie wheezy (stable). Dokładna wersja kernela: 3.2.60-1+deb7u3
Poprawiony plik patch: http://s000.tinyupload.com/index.php?file_id=09646843631107441645 albo tu https://www.sendspace.com/file/1tsgao
Trafiłem na ten sam problem co autor pierwszego posta. Robiłem update debiana z wersji 6 do 7 i zrobiłem aktualizacje kernela z 2.6 do 3.2. Pobrałem debianowe źródła przez "apt-get source linux"
i zadowolony chciałem szybko dodać patch na IMQ, skompilować i mieć spokój. Niestety "hunks FAILED" i lipa.. jak to bywa w debianie coś się zje* po upgrade. Okazuje się że debian ma swoje kilkaset patchy i zmieniają one niektóre pliki, które muszą być spatchowane żeby zadziałał IMQ.
Musiałem wybierać: poprawić patch IMQ tak żeby wszedł na kernel debiana albo ściągnąć kernel bez patchy debiana, dodać patch IMQ, skompilować i modlić się że system wstanie i nie będe musiał serwera wyciągać z piwnicy. Wybrałem opcje nr. 1. Jakoś się udało. Patch dodany, imq działa i wszystko gra.
Zostawiam ten post dla szukających przez google rozwiązania tego popieprzonego błędu. Ja nie znalazłem nic przydatnego poza tym tematem.
Naprawa patcha polega na użyciu programu "quilt" do zarządzania patchami. Debianowy pakiet kernela używa quilta do zarządzania swoimi patchami i w ogóle bardzo pomógł w naprawieniu IMQ.
W skrócie:
1. quilt import patch-imq.diff
2. quilt push -f (tworzy pliki .rej z odrzuconymi fragmentami patcha ale większość się importuje)
3. Ręczne kopiowanie z plików .rej fragmentów odrzuconego kodu do plików .c i .h
4. quilt refresh (przebudowuje patch i zapamiętuje zmiany)
Offline