diff --git a/src/syscall/types_freebsd.go b/src/syscall/types_freebsd.go
index 703101526a024c2bfc1c9c8e80dac36d6c50621f..6c5a8627c16457b03a1901df1205e0e9cec7ad97 100644
--- a/src/syscall/types_freebsd.go
+++ b/src/syscall/types_freebsd.go
@@ -43,6 +43,8 @@ package syscall
 #include <netinet/in.h>
 #include <netinet/icmp6.h>
 #include <netinet/tcp.h>
+#include <netlink/netlink.h>
+#include <netlink/netlink_route.h>
 
 enum {
 	sizeofPtr = sizeof(void*),
@@ -321,3 +323,50 @@ const (
 // Terminal handling
 
 type Termios C.struct_termios
+
+// Netlink handling
+
+const (
+        SizeofNlMsghdr  = C.sizeof_struct_nlmsghdr
+        SizeofNlMsgerr  = C.sizeof_struct_nlmsgerr
+        SizeofRtGenmsg  = C.sizeof_struct_rtgenmsg
+        SizeofNlAttr    = C.sizeof_struct_nlattr
+        SizeofRtAttr    = C.sizeof_struct_rtattr
+        SizeofIfInfomsg = C.sizeof_struct_ifinfomsg
+        SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg
+        SizeofRtMsg     = C.sizeof_struct_rtmsg
+        SizeofRtNexthop = C.sizeof_struct_rtnexthop
+
+        NETLINK_ROUTE = C.NETLINK_ROUTE
+        NLMSG_ALIGNTO = C.NLMSG_ALIGNTO
+        NLMSG_HDRLEN  = C.NLMSG_HDRLEN
+        NLMSG_DONE    = C.NLMSG_DONE
+        NLMSG_ERROR   = C.NLMSG_ERROR
+        NLM_F_DUMP    = C.NLM_F_DUMP
+        NLM_F_REQUEST = C.NLM_F_REQUEST
+
+        RTA_ALIGNTO  = C.RTA_ALIGNTO
+        RTM_DELLINK  = C.RTM_DELLINK
+        RTM_NEWLINK  = C.RTM_NEWLINK
+        RTM_NEWROUTE = C.RTM_NEWROUTE
+        RTM_DELROUTE = C.RTM_DELROUTE
+)
+
+type NlMsghdr C.struct_nlmsghdr
+
+type NlMsgerr C.struct_nlmsgerr
+
+type RtGenmsg C.struct_rtgenmsg
+
+type NlAttr C.struct_nlattr
+
+type RtAttr C.struct_rtattr
+
+type IfInfomsg C.struct_ifinfomsg
+
+type IfAddrmsg C.struct_ifaddrmsg
+
+type RtMsg C.struct_rtmsg
+
+type RtNexthop C.struct_rtnexthop
+