From patchwork Mon Jan 30 16:05:45 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 138604 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 1C5131007D1 for ; Tue, 31 Jan 2012 03:05:52 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753454Ab2A3QFu (ORCPT ); Mon, 30 Jan 2012 11:05:50 -0500 Received: from mail-bk0-f46.google.com ([209.85.214.46]:49194 "EHLO mail-bk0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752672Ab2A3QFt (ORCPT ); Mon, 30 Jan 2012 11:05:49 -0500 Received: by bkas6 with SMTP id s6so3317293bka.19 for ; Mon, 30 Jan 2012 08:05:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:subject:from:to:cc:date:content-type:x-mailer :content-transfer-encoding:mime-version; bh=8yCaDbUuTu16yYOi/MXUGqzfCqRJvfyr/4Tniqy7bpc=; b=Tn+/L+dOc1GhGFWpuHr4HHg4Ar+Z4OPrvPYCHWHDUvjJRSqAJk5IDUVsr3ADmNiAqI 9Z4Y40BIKF75WcwJlpiX0+rYdSYspDjF7Pd+nROPXSGI/l5gbARhxX+8Ho0koyToMnxF knlI8Dy0xkLszukIbMc093NjoYWiWfbiMfdrk= Received: by 10.204.156.135 with SMTP id x7mr9064077bkw.138.1327939547961; Mon, 30 Jan 2012 08:05:47 -0800 (PST) Received: from [10.150.51.212] (gw0.net.jmsp.net. [212.23.165.14]) by mx.google.com with ESMTPS id ga13sm38531828bkc.5.2012.01.30.08.05.46 (version=SSLv3 cipher=OTHER); Mon, 30 Jan 2012 08:05:46 -0800 (PST) Message-ID: <1327939545.2297.11.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC> Subject: [PATCH iproute2] ss: should support CONFIG_INET_UDP_DIAG=n kernels From: Eric Dumazet To: Stephen Hemminger Cc: netdev , Pavel Emelyanov Date: Mon, 30 Jan 2012 17:05:45 +0100 X-Mailer: Evolution 3.2.2- Mime-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ss -x currently fails if CONFIG_INET_UDP_DIAG=n or old kernels Also close file descriptors while we are at it. Signed-off-by: Eric Dumazet Cc: Pavel Emelyanov --- misc/ss.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/misc/ss.c b/misc/ss.c index 7a15d69..eb42fd6 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -2092,8 +2092,10 @@ static int unix_show_netlink(struct filter *f, FILE *dump_fp) .msg_iovlen = f->f ? 3 : 1, }; - if (sendmsg(fd, &msg, 0) < 0) + if (sendmsg(fd, &msg, 0) < 0) { + close(fd); return -1; + } iov[0] = (struct iovec){ .iov_base = buf, @@ -2121,6 +2123,7 @@ static int unix_show_netlink(struct filter *f, FILE *dump_fp) } if (status == 0) { fprintf(stderr, "EOF on netlink\n"); + close(fd); return 0; } @@ -2135,22 +2138,28 @@ static int unix_show_netlink(struct filter *f, FILE *dump_fp) h->nlmsg_seq != 123456) goto skip_it; - if (h->nlmsg_type == NLMSG_DONE) + if (h->nlmsg_type == NLMSG_DONE) { + close(fd); return 0; + } if (h->nlmsg_type == NLMSG_ERROR) { struct nlmsgerr *err = (struct nlmsgerr*)NLMSG_DATA(h); if (h->nlmsg_len < NLMSG_LENGTH(sizeof(struct nlmsgerr))) { fprintf(stderr, "ERROR truncated\n"); } else { errno = -err->error; - perror("TCPDIAG answers"); + if (errno != ENOENT) + fprintf(stderr, "UDIAG answers %d\n", errno); } - return 0; + close(fd); + return -1; } if (!dump_fp) { err = unix_show_sock(h, f); - if (err < 0) + if (err < 0) { + close(fd); return err; + } } skip_it: @@ -2165,6 +2174,7 @@ skip_it: exit(1); } } + close(fd); return 0; } @@ -2241,7 +2251,7 @@ int unix_show(struct filter *f) cnt = 0; } } - + fclose(fp); if (list) { unix_list_print(list, f); unix_list_free(list);