diff -uNrp iproute2-2.6.11-050330.orig/include/linux/netlink.h iproute2-2.6.11-050330.dccp/include/linux/netlink.h --- iproute2-2.6.11-050330.orig/include/linux/netlink.h 2005-04-01 16:58:11.000000000 -0300 +++ iproute2-2.6.11-050330.dccp/include/linux/netlink.h 2005-04-16 05:54:08.000000000 -0300 @@ -14,6 +14,7 @@ #define NETLINK_SELINUX 7 /* SELinux event notifications */ #define NETLINK_ARPD 8 #define NETLINK_AUDIT 9 /* auditing */ +#define NETLINK_DCCPDIAG 10 /* DCCP socket monitoring */ #define NETLINK_ROUTE6 11 /* af_inet6 route comm channel */ #define NETLINK_IP6_FW 13 #define NETLINK_DNRTMSG 14 /* DECnet routing messages */ diff -uNrp iproute2-2.6.11-050330.orig/misc/ss.c iproute2-2.6.11-050330.dccp/misc/ss.c --- iproute2-2.6.11-050330.orig/misc/ss.c 2005-04-01 16:58:11.000000000 -0300 +++ iproute2-2.6.11-050330.dccp/misc/ss.c 2005-04-16 06:02:21.000000000 -0300 @@ -52,6 +52,8 @@ int addr_width; int serv_width; int screen_width; +static int protocol = NETLINK_TCPDIAG; + static const char *TCP_PROTO = "tcp"; static const char *UDP_PROTO = "udp"; static const char *RAW_PROTO = "raw"; @@ -1460,7 +1462,7 @@ int tcp_show_netlink(struct filter *f, F char buf[8192]; struct iovec iov[3]; - if ((fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_TCPDIAG)) < 0) + if ((fd = socket(AF_NETLINK, SOCK_RAW, protocol)) < 0) return -1; memset(&nladdr, 0, sizeof(nladdr)); @@ -2432,6 +2434,7 @@ static const struct option long_opts[] = { "memory", 0, 0, 'm' }, { "info", 0, 0, 'i' }, { "processes", 0, 0, 'p' }, + { "dccp", 0, 0, 'd' }, { "tcp", 0, 0, 't' }, { "udp", 0, 0, 'u' }, { "raw", 0, 0, 'w' }, @@ -2466,7 +2469,7 @@ int main(int argc, char *argv[]) current_filter.states = default_filter.states; - while ((ch = getopt_long(argc, argv, "haletuwxnro460spf:miA:D:F:vV", + while ((ch = getopt_long(argc, argv, "dhaletuwxnro460spf:miA:D:F:vV", long_opts, NULL)) != EOF) { switch(ch) { case 'n': @@ -2495,6 +2498,9 @@ int main(int argc, char *argv[]) current_filter.dbs |= (1<