4df5da50db
Resolves: RHEL-17649
268 lines
11 KiB
Diff
268 lines
11 KiB
Diff
commit 885ce6abd66040cb78e985013242b43e7dd5ca14
|
|
Author: Nathan Scott <nathans@redhat.com>
|
|
Date: Fri Dec 8 11:29:25 2023 +1100
|
|
|
|
pcp-ss: fix the UDP UNCONN vs LISTEN state handling
|
|
|
|
Resolves Red Hat issue RHEL-17649
|
|
|
|
diff --git a/qa/1921 b/qa/1921
|
|
index e65dc369d..94c7a7383 100755
|
|
--- a/qa/1921
|
|
+++ b/qa/1921
|
|
@@ -76,6 +76,18 @@ else
|
|
cat $tmp.out >> $here/$seq.full
|
|
fi
|
|
|
|
+pcp ss -u > $tmp.out 2>&1
|
|
+if grep -q UNCONN $tmp.out # do not show UNCONN state by default in UDP mode
|
|
+then
|
|
+ echo Failed UDP UNCONN check
|
|
+ cat $tmp.out
|
|
+ status=1
|
|
+ exit
|
|
+else
|
|
+ echo Passed UDP UNCONN check
|
|
+ cat $tmp.out >> $here/$seq.full
|
|
+fi
|
|
+
|
|
pmdasockets_remove
|
|
|
|
# success, all done
|
|
diff --git a/qa/1921.out b/qa/1921.out
|
|
index 2331de828..0f4f815fc 100644
|
|
--- a/qa/1921.out
|
|
+++ b/qa/1921.out
|
|
@@ -8,6 +8,7 @@ Updating the PMCD control file, and notifying PMCD ...
|
|
Check network.persocket metrics have appeared ... X metrics and Y values
|
|
|
|
Passed LISTEN check
|
|
+Passed UDP UNCONN check
|
|
|
|
=== remove sockets agent ===
|
|
Culling the Performance Metrics Name Space ...
|
|
diff --git a/src/pcp/ss/pcp-ss.py b/src/pcp/ss/pcp-ss.py
|
|
index 91bb81a97..72e0607c1 100755
|
|
--- a/src/pcp/ss/pcp-ss.py
|
|
+++ b/src/pcp/ss/pcp-ss.py
|
|
@@ -254,7 +254,8 @@ class SS(object):
|
|
if self.args.tcp and netid == "tcp":
|
|
ret = True
|
|
elif self.args.udp and netid == "udp":
|
|
- ret = True
|
|
+ state = self.valuesD["state"][inst]
|
|
+ ret = bool(state != "UNCONN" or self.args.listening)
|
|
elif self.args.unix and netid == "unix":
|
|
ret = True
|
|
elif self.args.raw and netid == "raw":
|
|
@@ -282,6 +283,9 @@ class SS(object):
|
|
return True
|
|
state = self.valuesD["state"][inst]
|
|
if self.args.listening:
|
|
+ netid = self.valuesD["netid"][inst]
|
|
+ if state == "UNCONN" and netid == 'udp':
|
|
+ return True
|
|
if state != "LISTEN":
|
|
return False
|
|
else:
|
|
|
|
commit 2b184367378a1a69a48da09e284256ed874ffac2
|
|
Author: Nathan Scott <nathans@redhat.com>
|
|
Date: Fri Dec 8 11:43:24 2023 +1100
|
|
|
|
docs: do not document (nor accept) unimplemented pcp-ss options
|
|
|
|
Related to Red Hat issue RHEL-17334
|
|
|
|
diff --git a/src/pcp/ss/pcp-ss.1 b/src/pcp/ss/pcp-ss.1
|
|
index 9598fa8d8..69caf35ea 100644
|
|
--- a/src/pcp/ss/pcp-ss.1
|
|
+++ b/src/pcp/ss/pcp-ss.1
|
|
@@ -1,6 +1,6 @@
|
|
'\"macro stdmacro
|
|
.\"
|
|
-.\" Copyright (c) 2021 Red Hat.
|
|
+.\" Copyright (c) 2021,2023 Red Hat.
|
|
.\"
|
|
.\" This program is free software; you can redistribute it and/or modify it
|
|
.\" under the terms of the GNU General Public License as published by the
|
|
@@ -169,9 +169,9 @@ output version information
|
|
.TP 5
|
|
\fB\-n\fP, \fB\-\-numeric\fP
|
|
don't resolve service names (currently always set)
|
|
-.TP 5
|
|
-\fB\-r\fP, \fB\-\-resolve\fP
|
|
-resolve host names (not yet implemented)
|
|
+'\" .TP 5
|
|
+'\" \fB\-r\fP, \fB\-\-resolve\fP
|
|
+'\" resolve host names (not yet implemented)
|
|
.TP 5
|
|
\fB\-a\fP, \fB\-\-all\fP
|
|
display all sockets
|
|
@@ -187,60 +187,60 @@ show detailed socket information
|
|
.TP 5
|
|
\fB\-m\fP, \fB\-\-memory\fP
|
|
show socket memory usage
|
|
-.TP 5
|
|
-\fB\-p\fP, \fB\-\-processes\fP
|
|
-show process using socket
|
|
+'\" .TP 5
|
|
+'\" \fB\-p\fP, \fB\-\-processes\fP
|
|
+'\" show process using socket
|
|
.TP 5
|
|
\fB\-i\fP, \fB\-\-info\fP
|
|
show internal TCP information
|
|
-.TP 5
|
|
-\fB\-s\fP, \fB\-\-summary\fP
|
|
-show socket usage summary
|
|
-.TP 5
|
|
-\fB\-b\fP, \fB\-\-bpf\fP
|
|
-show bpf filter socket information
|
|
-.TP 5
|
|
-\fB\-E\fP, \fB\-\-events\fP
|
|
-continually display sockets as they are destroyed
|
|
-.TP 5
|
|
-\fB\-Z\fP, \fB\-\-context\fP
|
|
-display process SELinux security contexts
|
|
-.TP 5
|
|
-\fB\-z\fP, \fB\-\-contexts\fP
|
|
-display process and socket SELinux security contexts
|
|
-.TP 5
|
|
-\fB\-N\fP, \fB\-\-net\fP
|
|
-switch to the specified network namespace name
|
|
+'\" .TP 5
|
|
+'\" \fB\-s\fP, \fB\-\-summary\fP
|
|
+'\" show socket usage summary
|
|
+'\" .TP 5
|
|
+'\" \fB\-b\fP, \fB\-\-bpf\fP
|
|
+'\" show bpf filter socket information
|
|
+'\" .TP 5
|
|
+'\" \fB\-E\fP, \fB\-\-events\fP
|
|
+'\" continually display sockets as they are destroyed
|
|
+'\" .TP 5
|
|
+'\" \fB\-Z\fP, \fB\-\-context\fP
|
|
+'\" display process SELinux security contexts
|
|
+'\" .TP 5
|
|
+'\" \fB\-z\fP, \fB\-\-contexts\fP
|
|
+'\" display process and socket SELinux security contexts
|
|
+'\" .TP 5
|
|
+'\" \fB\-N\fP, \fB\-\-net\fP
|
|
+'\" switch to the specified network namespace name
|
|
.TP 5
|
|
\fB\-4\fP, \fB\-\-ipv4\fP
|
|
display only IP version 4 sockets
|
|
.TP 5
|
|
\fB\-6\fP, \fB\-\-ipv6\fP
|
|
display only IP version 6 sockets
|
|
-.TP 5
|
|
-\fB\-0\fP, \fB\-\-packet\fP
|
|
-display PACKET sockets
|
|
+'\" .TP 5
|
|
+'\" \fB\-0\fP, \fB\-\-packet\fP
|
|
+'\" display PACKET sockets
|
|
.TP 5
|
|
\fB\-t\fP, \fB\-\-tcp\fP
|
|
display only TCP sockets
|
|
-.TP 5
|
|
-\fB\-M\fP, \fB\-\-mptcp\fP
|
|
-display only MPTCP sockets
|
|
-.TP 5
|
|
-\fB\-S\fP, \fB\-\-sctp\fP
|
|
-display only SCTP sockets
|
|
+'\" .TP 5
|
|
+'\" \fB\-M\fP, \fB\-\-mptcp\fP
|
|
+'\" display only MPTCP sockets
|
|
+'\" .TP 5
|
|
+'\" \fB\-S\fP, \fB\-\-sctp\fP
|
|
+'\" display only SCTP sockets
|
|
.TP 5
|
|
\fB\-u\fP, \fB\-\-udp\fP
|
|
display only UDP sockets
|
|
-.TP 5
|
|
-\fB\-d\fP, \fB\-\-dccp\fP
|
|
-display only DCCP sockets
|
|
-.TP 5
|
|
-\fB\-w\fP, \fB\-\-raw\fP
|
|
-display only RAW sockets
|
|
-.TP 5
|
|
-\fB\-x\fP, \fB\-\-unix\fP
|
|
-display only Unix domain sockets
|
|
+'\" .TP 5
|
|
+'\" \fB\-d\fP, \fB\-\-dccp\fP
|
|
+'\" display only DCCP sockets
|
|
+'\" .TP 5
|
|
+'\" \fB\-w\fP, \fB\-\-raw\fP
|
|
+'\" display only RAW sockets
|
|
+'\" .TP 5
|
|
+'\" \fB\-x\fP, \fB\-\-unix\fP
|
|
+'\" display only Unix domain sockets
|
|
.TP 5
|
|
\fB\-H\fP, \fB\-\-noheader\fP
|
|
Suppress header line
|
|
diff --git a/src/pcp/ss/pcp-ss.py b/src/pcp/ss/pcp-ss.py
|
|
index 72e0607c1..74952911a 100755
|
|
--- a/src/pcp/ss/pcp-ss.py
|
|
+++ b/src/pcp/ss/pcp-ss.py
|
|
@@ -53,45 +53,42 @@ class SS(object):
|
|
p = argparse.ArgumentParser()
|
|
p.add_argument('-V', '--version', action='store_true', help='output version information')
|
|
p.add_argument('-n', '--numeric', action='store_true', help='don\'t resolve service names or port names (currently always set)')
|
|
- p.add_argument('-r', '--resolve', action='store_true', help='resolve host names (currently never set)')
|
|
+ #p.add_argument('-r', '--resolve', action='store_true', help='resolve host names (currently never set)')
|
|
p.add_argument('-a', '--all', action='store_true', help='display both listening and non-listening states')
|
|
p.add_argument('-l', '--listening', action='store_true', default=False, help='display only listening sockets')
|
|
p.add_argument('-o', '--options', action='store_true', help='show timer information')
|
|
p.add_argument('-e', '--extended', action='store_true', help='show detailed socket information')
|
|
p.add_argument('-m', '--memory', action='store_true', help='show socket memory usage')
|
|
- p.add_argument('-p', '--processes', action='store_true', help='show process using socket (not yet implemented)')
|
|
+ #p.add_argument('-p', '--processes', action='store_true', help='show process using socket (not yet implemented)')
|
|
p.add_argument('-i', '--info', action='store_true', help='show internal TCP information')
|
|
- p.add_argument('-s', '--summary', action='store_true', help='show socket usage summary (not yet implemented)')
|
|
- p.add_argument('-b', '--bpf', action='store_true', help='show bpf filter socket information (not yet implemented)')
|
|
- p.add_argument('-E', '--events', action='store_true', help='continually display sockets as they are destroyed (not implemented)')
|
|
- p.add_argument('-Z', '--context', action='store_true', help='display process SELinux security contexts (not implemented)')
|
|
- p.add_argument('-z', '--contexts', action='store_true', help='display process and socket SELinux security contexts (not implemented)')
|
|
- p.add_argument('-N', '--net', action='store_true', help='switch to the specified network namespace name (not implemented)')
|
|
+ #p.add_argument('-s', '--summary', action='store_true', help='show socket usage summary (not yet implemented)')
|
|
+ #p.add_argument('-b', '--bpf', action='store_true', help='show bpf filter socket information (not yet implemented)')
|
|
+ #p.add_argument('-E', '--events', action='store_true', help='continually display sockets as they are destroyed (not implemented)')
|
|
+ #p.add_argument('-Z', '--context', action='store_true', help='display process SELinux security contexts (not implemented)')
|
|
+ #p.add_argument('-z', '--contexts', action='store_true', help='display process and socket SELinux security contexts (not implemented)')
|
|
+ #p.add_argument('-N', '--net', action='store_true', help='switch to the specified network namespace name (not implemented)')
|
|
p.add_argument('-4', '--ipv4', action='store_true', help='display only IP version 4 sockets')
|
|
p.add_argument('-6', '--ipv6', action='store_true', help='display only IP version 6 sockets')
|
|
- p.add_argument('-0', '--packet', action='store_true', help='display PACKET sockets (not implemented)')
|
|
+ #p.add_argument('-0', '--packet', action='store_true', help='display PACKET sockets (not implemented)')
|
|
p.add_argument('-t', '--tcp', action='store_true', help='display only TCP sockets')
|
|
- p.add_argument('-M', '--mptcp', action='store_true', help='display only MPTCP sockets (not implemented)')
|
|
- p.add_argument('-S', '--sctp', action='store_true', help='display only SCTP sockets (not implemented)')
|
|
+ #p.add_argument('-M', '--mptcp', action='store_true', help='display only MPTCP sockets (not implemented)')
|
|
+ #p.add_argument('-S', '--sctp', action='store_true', help='display only SCTP sockets (not implemented)')
|
|
p.add_argument('-u', '--udp', action='store_true', help='display only UDP sockets')
|
|
- p.add_argument('-d', '--dccp', action='store_true', help='display only DCCP sockets (not implemented)')
|
|
- p.add_argument('-w', '--raw', action='store_true', help='display only RAW sockets (not implemented)')
|
|
- p.add_argument('-x', '--unix', action='store_true', help='display only Unix domain sockets (not implemented)')
|
|
+ #p.add_argument('-d', '--dccp', action='store_true', help='display only DCCP sockets (not implemented)')
|
|
+ #p.add_argument('-w', '--raw', action='store_true', help='display only RAW sockets (not implemented)')
|
|
+ #p.add_argument('-x', '--unix', action='store_true', help='display only Unix domain sockets (not implemented)')
|
|
p.add_argument('-H', '--noheader', action='store_true', help='Suppress header line')
|
|
p.add_argument('-O', '--oneline', action='store_true', help='print each socket\'s data on a single line')
|
|
args = p.parse_args()
|
|
|
|
# special cases
|
|
- if not (args.tcp or args.udp or args.mptcp or args.sctp or args.packet or args.dccp or args.raw or args.unix):
|
|
- args.tcp = args.udp = args.mptcp = args.sctp = args.packet = args.dccp = args.raw = args.unix = True
|
|
+ if not (args.tcp or args.udp): # or args.mptcp or args.sctp or args.packet or args.dccp or args.raw or args.unix):
|
|
+ args.tcp = args.udp = True # args.mptcp = args.sctp = args.packet = args.dccp = args.raw = args.unix = True
|
|
|
|
if not (args.ipv4 or args.ipv6):
|
|
# default to both ipv4 and ipv6, subject to the prevailing filter
|
|
args.ipv4 = args.ipv6 = True
|
|
|
|
- if args.events or args.context or args.contexts or args.net or args.summary or args.processes:
|
|
- print("Warning: --events, --context --net, --summary and --processes options are not implemented")
|
|
-
|
|
return args
|
|
|
|
def connect(self):
|