libnl/lib/route
chantra 8a4f16b5bf Call to_msg_fill_raw when defined to_msg_fill is NULL
netem qdisc uses to_msg_fill_raw to build netlink packet. So far, this
was not called from anywhere.

Example creating a netem qdisc before and after the change:

[root@testbox libnl]# NLCB=debug ./netem
-- Debug: Sent Message:
--------------------------   BEGIN NETLINK MESSAGE ---------------------------
  [NETLINK HEADER] 16 octets
    .nlmsg_len = 48
    .type = 36 <route/qdisc::new>
    .flags = 1029 <REQUEST,ACK,ATOMIC>
    .seq = 1376894544
    .port = 17877
  [PAYLOAD] 20 octets
    00 00 00 00 02 00 00 00 00 00 01 80 01 00 01 00 ................
    00 00 00 00                                     ....
  [ATTR 01] 6 octets
    6e 65 74 65 6d 00                               netem.
  [PADDING] 2 octets
    00 00                                           ..
---------------------------  END NETLINK MESSAGE ---------------------------
-- Debug: Received Message:
--------------------------   BEGIN NETLINK MESSAGE ---------------------------
  [NETLINK HEADER] 16 octets
    .nlmsg_len = 68
    .type = 2 <ERROR>
    .flags = 0 <>
    .seq = 1376894544
    .port = 17877
  [ERRORMSG] 20 octets
    .error = -22 "Invalid argument"
  [ORIGINAL MESSAGE] 16 octets
    .nlmsg_len = 16
    .type = 36 <0x24>
    .flags = 1029 <REQUEST,ACK,ATOMIC>
    .seq = 1376894544
    .port = 17877
---------------------------  END NETLINK MESSAGE ---------------------------
-- Error received: Invalid argument
-- Original message: type=0x24 length=48 flags=<REQUEST,ACK,ATOMIC>
sequence-nr=1376894544 pid=17877
RC -7
[root@testbox libnl]# NLCB=debug ./netem
-- Debug: Sent Message:
--------------------------   BEGIN NETLINK MESSAGE ---------------------------
  [NETLINK HEADER] 16 octets
    .nlmsg_len = 76
    .type = 36 <route/qdisc::new>
    .flags = 1029 <REQUEST,ACK,ATOMIC>
    .seq = 1376895147
    .port = 26541
  [PAYLOAD] 20 octets
    00 00 00 00 02 00 00 00 00 00 01 80 01 00 01 00 ................
    00 00 00 00                                     ....
  [ATTR 01] 6 octets
    6e 65 74 65 6d 00                               netem.
  [PADDING] 2 octets
    00 00                                           ..
  [ATTR 02] 24 octets
    00 00 00 00 a0 86 01 00 00 00 00 80 00 00 00 00 ................
    00 00 00 00 00 00 00 00                         ........
---------------------------  END NETLINK MESSAGE ---------------------------
-- Debug: Received Message:
--------------------------   BEGIN NETLINK MESSAGE ---------------------------
  [NETLINK HEADER] 16 octets
    .nlmsg_len = 36
    .type = 2 <ERROR>
    .flags = 0 <>
    .seq = 1376895147
    .port = 26541
  [ERRORMSG] 20 octets
    .error = 0 "Success"
  [ORIGINAL MESSAGE] 16 octets
    .nlmsg_len = 16
    .type = 36 <0x24>
    .flags = 1029 <REQUEST,ACK,ATOMIC>
    .seq = 1376895147
    .port = 26541
---------------------------  END NETLINK MESSAGE  ---------------------------
RC 0
[root@testbox libnl]# tc qdisc show
qdisc htb 1: dev eth0 root refcnt 2 r2q 10 default 0 direct_packets_stat 21115
qdisc netem 8001: dev eth0 parent 1:1 limit 100000 loss 50%
qdisc htb 1: dev eth1 root refcnt 2 r2q 10 default 0 direct_packets_stat 0

Signed-off-by: chantra <chantra@fb.com>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
2013-08-26 10:11:12 +02:00
..
cls Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
link Add VXLAN support. 2013-08-04 15:43:54 +09:00
qdisc Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
.gitignore Let git ignore generated pktloc source files 2010-07-03 15:56:07 +02:00
addr.c rtnl-addr: Fix invalid call to nl_addr_set_prefixlen() if neither local or peer address are present 2013-03-14 18:57:15 +01:00
class.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
classid.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
cls.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
link.c fix double free caused by freeing link af_data in rtnl_link_set_family() 2013-08-21 14:46:42 +02:00
neigh.c nl: Print file:line:func in debugging messages and provide --disable-debug to disable debugging 2013-04-02 11:39:30 +02:00
neightbl.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
nexthop.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
pktloc.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
pktloc_grammar.l Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
pktloc_syntax.y Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
qdisc.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
route.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
route_obj.c nl: Print file:line:func in debugging messages and provide --disable-debug to disable debugging 2013-04-02 11:39:30 +02:00
route_utils.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
rtnl.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
rule.c Move private header files to <netlink-private/*> 2013-01-24 13:51:24 +01:00
tc.c Call to_msg_fill_raw when defined to_msg_fill is NULL 2013-08-26 10:11:12 +02:00