| From: David Miller <da...@davemloft.net> | Everyone either uses an unsigned type (such as "size_t") or adds an | explicit cast to an unsinged type for the second argument.
That sounded odd to me. So I looked through the Fedora code base, as indexed by searchcode.com. This took a stupid amount of time so I didn't check my work. Summary: 37 files use a signed type, 32 files use an unsigned type (some are in each category!). So your point is not correct. It is amazing how many private definitions there are for NLMSG_OK. They are mostly just copies but at least some leave out the int cast of the result of sizeof. The kernel's own version seems to be an inline function (with a lower-case name). It would be nice to replace the NLMSG_OK macro with an inline function: this supports better type checking. I don't know if there are technical reasons not to do this. Supporting data: strongswan /strongswan-5.0.0/src/libhydra/plugins/kernel_netlink/kernel_netlink_ipsec.c int, size_t, size_t, size_t, size_t, size_t libnfnetlink /libnfnetlink-1.0.0/src/libnfnetlink.c size_t, size_t, size_t, unsigned int glibc /glibc-2.16-75f0d304/sysdeps/unix/sysv/linux/ifaddrs.c arm-gp2x-linux-glibc /arm-gp2x-linux-glibc-2.3.6/glibc-2.3.6/sysdeps/unix/sysv/linux/ifaddrs.c size_t, size_t, size_t strongswan /strongswan-5.0.0/src/libhydra/plugins/kernel_netlink/kernel_netlink_net.c int, size_t, size_t, size_t fcoe-utils /fcoe-utils-1.0.23/fcoemon.c int, int, int uClibc /uClibc-0.9.32/libc/inet/ifaddrs.c size_t, size_t, size_t glibc /glibc-2.16-75f0d304/sysdeps/unix/sysv/linux/if_index.c arm-gp2x-linux-glibc /arm-gp2x-linux-glibc-2.3.6/glibc-2.3.6/sysdeps/unix/sysv/linux/if_index.c size_t, size_t bootchart /bootchart2-0.14.0/collector/tasks-netlink.c size_, size_t netlabel_tools /netlabel_tools-0.19/libnetlabel/mod_mgmt.c netlabel_tools /netlabel_tools-0.19/libnetlabel/mod_unlabeled.c each has int, int bird /bird-1.3.7/sysdep/linux/netlink/netlink.c unsigned int, unsigned int gtk-gnutella /gtk-gnutella-0.97.1/src/lib/getgateway.c unsigned, unsigned iproute /iproute2-3.4.0/lib/libnetlink.c int, int iproute /iproute2-3.4.0/misc/ss.c int, ssize_t lldpad /lldpad-0.9.44/lldp_dcbx_nl.c unsigned dlm /dlm-3.99.5/dlm_controld/netlink.c int, int gnet2 /gnet-2.0.8/src/usagi_ifaddrs.c int, int dnsmasq /dnsmasq-2.59/src/netlink.c size_t (through cast of ssize_t value), size_t (through cast of ssize_t value) net-snmp /net-snmp-5.7.1/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c int, int net-snmp /net-snmp-5.7.1/agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c int rb_libtorrent /libtorrent-rasterbar-0.16.2/src/enum_net.cpp int, int bootparamd /netkit-bootparamd-0.17/rpc.bootparamd/bootparam_default_route.c u_int (through cast of int value), u_int (through cast of int value) nss-myhostname /nss-myhostname-0.3/netlink.c size_t (through cast of ssize_t value) glibc /glibc-2.16-75f0d304/sysdeps/unix/sysv/linux/check_native.c glibc /glibc-2.16-75f0d304/sysdeps/unix/sysv/linux/check_pf.c size_t (through cast of ssize_t value) audit /audit-2.2.1/lib/netlink.c unsigned int (through cast of int) rstp /rstp/libnetlink.c int fence-virt /fence-virt-0.3.0/common/ip_lookup.c int libpcap /libpcap-1.3.0/pcap-netfilter-linux.c int oidentd /oidentd-2.0.8/src/kernel/linux.c has it's own copy of the definition of NLMSG_OK, without cast to int size_t (cast of ssize_t value) netlabel_tools /netlabel_tools-0.19/libnetlabel/netlabel_comm.c int netlabel_tools /netlabel_tools-0.19/libnetlabel/mod_cipsov4.c int keepalived /keepalived-1.2.2/keepalived/vrrp/vrrp_netlink.c int xen /xen-4.1.2/tools/python/xen/lowlevel/netlink/libnetlink.c int mipv6-daemon /mipv6-daemon-2.0.2.20110203bgit/libnetlink/libnetlink.c size_t (cast of int value) avahi /avahi-0.6.31/avahi-core/netlink.c size_t (cast of ssize_t) avahi /avahi-0.6.31/avahi-autoipd/iface-linux.c size_t libcgroup /libcgroup-0.38/src/daemon/cgrulesengd.c size_t (but code would probably be more correct with ssize_t) libnl /libnl-1.1/lib/nl.c int pl /pl-6.0.2/packages/tipc/tipcutils/tipc-config.c int mingw-glib2 /glib-2.33.1/gio/gnetworkmonitornetlink.c size_t (cast of gssize value) fcoe-utils /fcoe-utils-1.0.23/lib/rtnetlink.c int libnl3 /libnl-3.2.7/lib/nl.c int iscsi-initiator-utils /open-iscsi-2.0-872-rc4-bnx2i/usr/dcb_app.c unsigned int (cast from int) lldpad /lldpad-0.9.44/lldp_rtnl.c unsigned lldpad /lldpad-0.9.44/nltest.c unsigned int (cast from int) ebtables /ebtables-v2.0.10-4/examples/ulog/test_ulog.c 65536 (odd! bug?); counts as an int wpa_supplicant /wpa_supplicant-1.0-rc3/src/drivers/netlink.c int ipsec-tools /ipsec-tools-0.8.0/src/racoon/grabmyaddr.c int ulogd /ulogd-2.0.0beta4/libipulog/libipulog.c size_t gupnp /gupnp-0.18.3/libgupnp/gupnp-linux-context-manager.c int ike /ike/source/libip/libip.route.cpp int libnfnetlink /libnfnetlink-1.0.0/src/rtnl.c int dnsmasq /dnsmasq-2.59/contrib/wrt/dhcp_release.c size_t (cast from ssize_t) netplug /netplug-1.2.9.1/netlink.c int oidentd /oidentd-2.0.8/src/kernel/linux.c size_t (from ssize_t) certmonger /certmonger-0.59/src/netlink.c size_t (cast from int) certmonger /certmonger-0.59/src/nl-check.c unsigned int (cast from int) radvd /radvd-1.9.1/netlink.c int ptlib /ptlib-2.10.2/src/ptlib/unix/socket.cxx unsigned (cast from int) acpid /acpid-2.0.16/kacpimon/libnetlink.c unsigned (cast from int) net-snmp /net-snmp-5.7.1/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c int net-snmp /net-snmp-5.7.1/agent/mibgroup/if-mib/data_access/interface_linux.c int net-snmp /net-snmp-5.7.1/agent/mibgroup/ip-mib/data_access/arp_netlink.c int net-snmp /net-snmp-5.7.1/agent/mibgroup/mibII/tcpTable.c int fprobe-ulog /fprobe-ulog-1.1/src/libipulog/libipulog.c size_t busybox /busybox-1.19.4/networking/ifplugd.c ssize_t busybox /busybox-1.19.4/networking/libiproute/libnetlink.c int ntp /ntp-4.2.6p5/ntpd/ntp_io.c int -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html