Thread (16 messages) 16 messages, 3 authors, 2016-01-18

Re: [iproute PATCH v3 2/2] ss: support closing inet sockets via SOCK_DESTROY.

From: Lorenzo Colitti <hidden>
Date: 2016-01-04 01:54:53

On Thu, Dec 31, 2015 at 5:34 AM, Stephen Hemminger
[off-list ref] wrote:
quoted
+     req.nlh.nlmsg_type = SOCK_DESTROY;
+     req.nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
+     req.nlh.nlmsg_seq = ++rth->seq;
+     req.r.sdiag_family = d->idiag_family;
+     req.r.sdiag_protocol = diag_arg->protocol;
+     req.r.id = d->id;
+
+     return rtnl_send_check_ack(rth, &req.nlh, req.nlh.nlmsg_len, 1);
Just use rtnl_talk() instead, it does request/reply.
The reason I did not use rtnl_talk is that it prints all errors to
stderr. This does not
fit well with SOCK_DESTROY, for which it is expected that some
operations will fail.

For example, if you type "ss -a -K dport = :443", you probably don't
want to see one "RTNETLINK answers: Operation not supported" error for
every TIME-WAIT socket to port 443, and you don't want to see
"RTNETLINK answers: No such file or directory" if one of those sockets
happens to be closed during the scan. Silently ignoring these errors
seemed best.

I could also add a parameter to rtnl_talk to suppress printing errors,
though the patch to do so would be roughly equivalent to the patch
where I added rtnl_send_check_ack. I can also just use rtnl_talk as
you suggest and not care about the errors.

Let me know what you prefer.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help