mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
![Daniel Borkmann](/assets/img/avatar_default.png)
Currently, there is no good possibility to debug netlink traffic that is being exchanged between kernel and user space. Therefore, this patch implements a netlink virtual device, so that netlink messages will be made visible to PF_PACKET sockets. Once there was an approach with a similar idea [1], but it got forgotten somehow. I think it makes most sense to accept the "overhead" of an extra netlink net device over implementing the same functionality from PF_PACKET sockets once again into netlink sockets. We have BPF filters that can already be easily applied which even have netlink extensions, we have RX_RING zero-copy between kernel- and user space that can be reused, and much more features. So instead of re-implementing all of this, we simply pass the skb to a given PF_PACKET socket for further analysis. Another nice benefit that comes from that is that no code needs to be changed in user space packet analyzers (maybe adding a dissector, but not more), thus out of the box, we can already capture pcap files of netlink traffic to debug/troubleshoot netlink problems. Also thanks goes to Thomas Graf, Flavio Leitner, Jesper Dangaard Brouer. [1] http://marc.info/?l=linux-netdev&m=113813401516110 Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
75 lines
2.1 KiB
Makefile
75 lines
2.1 KiB
Makefile
#
|
|
# Makefile for the Linux network device drivers.
|
|
#
|
|
|
|
#
|
|
# Networking Core Drivers
|
|
#
|
|
obj-$(CONFIG_BONDING) += bonding/
|
|
obj-$(CONFIG_DUMMY) += dummy.o
|
|
obj-$(CONFIG_EQUALIZER) += eql.o
|
|
obj-$(CONFIG_IFB) += ifb.o
|
|
obj-$(CONFIG_MACVLAN) += macvlan.o
|
|
obj-$(CONFIG_MACVTAP) += macvtap.o
|
|
obj-$(CONFIG_MII) += mii.o
|
|
obj-$(CONFIG_MDIO) += mdio.o
|
|
obj-$(CONFIG_NET) += Space.o loopback.o
|
|
obj-$(CONFIG_NETCONSOLE) += netconsole.o
|
|
obj-$(CONFIG_PHYLIB) += phy/
|
|
obj-$(CONFIG_RIONET) += rionet.o
|
|
obj-$(CONFIG_NET_TEAM) += team/
|
|
obj-$(CONFIG_TUN) += tun.o
|
|
obj-$(CONFIG_VETH) += veth.o
|
|
obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
|
|
obj-$(CONFIG_VXLAN) += vxlan.o
|
|
obj-$(CONFIG_NLMON) += nlmon.o
|
|
|
|
#
|
|
# Networking Drivers
|
|
#
|
|
obj-$(CONFIG_ARCNET) += arcnet/
|
|
obj-$(CONFIG_DEV_APPLETALK) += appletalk/
|
|
obj-$(CONFIG_CAIF) += caif/
|
|
obj-$(CONFIG_CAN) += can/
|
|
obj-$(CONFIG_ETRAX_ETHERNET) += cris/
|
|
obj-$(CONFIG_NET_DSA) += dsa/
|
|
obj-$(CONFIG_ETHERNET) += ethernet/
|
|
obj-$(CONFIG_FDDI) += fddi/
|
|
obj-$(CONFIG_HIPPI) += hippi/
|
|
obj-$(CONFIG_HAMRADIO) += hamradio/
|
|
obj-$(CONFIG_IRDA) += irda/
|
|
obj-$(CONFIG_PLIP) += plip/
|
|
obj-$(CONFIG_PPP) += ppp/
|
|
obj-$(CONFIG_PPP_ASYNC) += ppp/
|
|
obj-$(CONFIG_PPP_BSDCOMP) += ppp/
|
|
obj-$(CONFIG_PPP_DEFLATE) += ppp/
|
|
obj-$(CONFIG_PPP_MPPE) += ppp/
|
|
obj-$(CONFIG_PPP_SYNC_TTY) += ppp/
|
|
obj-$(CONFIG_PPPOE) += ppp/
|
|
obj-$(CONFIG_PPPOL2TP) += ppp/
|
|
obj-$(CONFIG_PPTP) += ppp/
|
|
obj-$(CONFIG_SLIP) += slip/
|
|
obj-$(CONFIG_SLHC) += slip/
|
|
obj-$(CONFIG_NET_SB1000) += sb1000.o
|
|
obj-$(CONFIG_SUNGEM_PHY) += sungem_phy.o
|
|
obj-$(CONFIG_WAN) += wan/
|
|
obj-$(CONFIG_WLAN) += wireless/
|
|
obj-$(CONFIG_WIMAX) += wimax/
|
|
obj-$(CONFIG_IEEE802154) += ieee802154/
|
|
|
|
obj-$(CONFIG_VMXNET3) += vmxnet3/
|
|
obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o
|
|
obj-$(CONFIG_XEN_NETDEV_BACKEND) += xen-netback/
|
|
|
|
obj-$(CONFIG_USB_CATC) += usb/
|
|
obj-$(CONFIG_USB_KAWETH) += usb/
|
|
obj-$(CONFIG_USB_PEGASUS) += usb/
|
|
obj-$(CONFIG_USB_RTL8150) += usb/
|
|
obj-$(CONFIG_USB_HSO) += usb/
|
|
obj-$(CONFIG_USB_USBNET) += usb/
|
|
obj-$(CONFIG_USB_ZD1201) += usb/
|
|
obj-$(CONFIG_USB_IPHETH) += usb/
|
|
obj-$(CONFIG_USB_CDC_PHONET) += usb/
|
|
|
|
obj-$(CONFIG_HYPERV_NET) += hyperv/
|
|
obj-$(CONFIG_NTB_NETDEV) += ntb_netdev.o
|