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/master/package/network/utils/iproute2/patches/210-add-act_connmark.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, "[b]Usage: ... connmark[/b]\n");[/quote]
To przypomina trochę:# tc filter add fw help
[b]Usage: ... fw [/b][ classid CLASSID ] [ police POLICE_SPEC ]
POLICE_SPEC := ... look at TBF
CLASSID := X:Y
NOTE: CLASSID is parsed as hexadecimal input.[/quote]
Problem w tym, żeKod:
# tc filter add connmark help Unknown filter "connmark", hence option "help" is unparsableCzyli 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
[b]open("/lib64/tc//f_connmark.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)[/b]
write(2, "Unknown filter \"connmark\", hence"..., 61Unknown filter "connmark", hence option "help" is unparsable
) = 61[/quote]
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)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
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
[quote=morfik]Napisałem zanim posłałem tutaj tego poprzedniego posta. Ja tylko stwierdziłem fakt. xD[/quote]
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 "[tt]apt-get source linux[/tt]"
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. [tt]quilt import patch-imq.diff[/tt]
2. [tt]quilt push -f[/tt] (tworzy pliki [tt].rej[/tt] z odrzuconymi fragmentami patcha ale większość się importuje)
3. Ręczne kopiowanie z plików [tt].rej[/tt] fragmentów odrzuconego kodu do plików [tt].c[/tt] i [tt].h[/tt]
4. [tt]quilt refresh[/tt] (przebudowuje patch i zapamiętuje zmiany)
Offline
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00158 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.116.40.177' WHERE u.id=1 |
0.00115 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.116.40.177', 1713516909) |
0.00095 | SELECT * FROM punbb_online WHERE logged<1713516609 |
0.00101 | SELECT topic_id FROM punbb_posts WHERE id=276788 |
0.00009 | SELECT id FROM punbb_posts WHERE topic_id=25124 ORDER BY posted |
0.00073 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25124 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00629 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25124 ORDER BY p.id LIMIT 25,25 |
0.00174 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25124 |
Total query time: 0.01378 s |