Skip to content

Commit

Permalink
linktype: add netlink link/dlt type
Browse files Browse the repository at this point in the history
With Linux 3.11, we have the possibility to debug local netlink traffic
[1] i.e.  the workflow looks like this:

Setup:
  modprobe nlmon
  ip link add type nlmon
  ip link set nlmon0 up

Capture:
  tcpdump -i nlmon0 ...

Teardown:
  ip link set nlmon0 down
  ip link del dev nlmon0
  rmmod nlmon

For pcap interoperability, introduce a common link type for netlink
captures.
  • Loading branch information
borkmann authored and guyharris committed Nov 18, 2013
1 parent 11031d0 commit 23d2673
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
7 changes: 6 additions & 1 deletion pcap-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -932,7 +932,12 @@
*/
#define LINKTYPE_WIRESHARK_UPPER_PDU 252

#define LINKTYPE_MATCHING_MAX 252 /* highest value in the "matching" range */
/*
* Link-layer header type for the netlink protocol (nlmon devices).
*/
#define LINKTYPE_NETLINK 253

#define LINKTYPE_MATCHING_MAX 253 /* highest value in the "matching" range */

static struct linktype_map {
int dlt;
Expand Down
13 changes: 13 additions & 0 deletions pcap-linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -2972,6 +2972,19 @@ static void map_arphrd_to_dlt(pcap_t *handle, int arptype, int cooked_ok)
handle->linktype = DLT_IEEE802_15_4_NOFCS;
break;

#ifndef ARPHRD_NETLINK
#define ARPHRD_NETLINK 824
#endif
case ARPHRD_NETLINK:
handle->linktype = DLT_NETLINK;
/*
* We need to use cooked mode, so that in sll_protocol we
* pick up the netlink protocol type such as NETLINK_ROUTE,
* NETLINK_GENERIC, NETLINK_FIB_LOOKUP, etc.
*/
handle->cooked = 1;
break;

default:
handle->linktype = -1;
break;
Expand Down
7 changes: 6 additions & 1 deletion pcap/bpf.h
Original file line number Diff line number Diff line change
Expand Up @@ -1224,7 +1224,12 @@ struct bpf_program {
*/
#define DLT_WIRESHARK_UPPER_PDU 252

#define DLT_MATCHING_MAX 252 /* highest value in the "matching" range */
/*
* DLT type for the netlink protocol (nlmon devices).
*/
#define DLT_NETLINK 253

#define DLT_MATCHING_MAX 253 /* highest value in the "matching" range */

/*
* DLT and savefile link type values are split into a class and
Expand Down

0 comments on commit 23d2673

Please sign in to comment.