Pull to refresh

Comments 11

Изначально я планировал сделать всё на базе кода из iproute, я потратил много времени на его изучение и разбор протокола, и в итоге, в момент, когда я отказался от идеи взять оттуда код, я достаточно разбирался в протоколе и уже было проще сделать самому, чем брать libnl3.

Есть еще классная утилита nltrace (https://github.com/socketpair/nltrace), которая запускается как strace, но выводит на консоль всю работу netlink в красивом виде.

Например так:

Скрытый текст

$ sudo ./nltrace ipset -L
netlink send(3):
Setting msg proto to 12
-------------------------- BEGIN NETLINK MESSAGE ---------------------------
[NETLINK HEADER] 16 octets
.nlmsg_len = 28
.type = 1537 <0x601>
.flags = 1
.seq = 1738840167
.port = 0
[PAYLOAD] 12 octets
02 00 00 00 05 00 01 00 07 00 00 00 ............
--------------------------- END NETLINK MESSAGE ---------------------------
netlink recv(3):
Setting msg proto to 12
-------------------------- BEGIN NETLINK MESSAGE ---------------------------
[NETLINK HEADER] 16 octets
.nlmsg_len = 36
.type = 1537 <0x601>
.flags = 0 <>
.seq = 1738840167
.port = 963725
[PAYLOAD] 20 octets
02 00 00 00 05 00 01 00 07 00 00 00 05 00 0a 00 ................
06 00 00 00 ....
--------------------------- END NETLINK MESSAGE ---------------------------
netlink send(3):
Setting msg proto to 12
-------------------------- BEGIN NETLINK MESSAGE ---------------------------
[NETLINK HEADER] 16 octets
.nlmsg_len = 28
.type = 1543 <0x607>
.flags = 773
.seq = 1738840168
.port = 0
[PAYLOAD] 12 octets
02 00 00 00 05 00 01 00 07 00 00 00 ............
--------------------------- END NETLINK MESSAGE ---------------------------
netlink recv(3):
Setting msg proto to 12
-------------------------- BEGIN NETLINK MESSAGE ---------------------------
[NETLINK HEADER] 16 octets
.nlmsg_len = 20
.type = 3
.flags = 2
.seq = 1738840168
.port = 963725
[PAYLOAD] 4 octets
00 00 00 00 ....
--------------------------- END NETLINK MESSAGE ---------------------------
Destroying descriptor fd 3

В том, что некоторые параметры, например вланы, могут идти в виде диапазона.

Sign up to leave a comment.