sctp: add intl_capable and reconf_capable in ss peer_capable
authorXin Long <lucien.xin@gmail.com>
Fri, 14 Apr 2023 21:21:16 +0000 (17:21 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Apr 2023 07:28:21 +0000 (08:28 +0100)
There are two new peer capables have been added since sctp_diag was
introduced into SCTP. When dumping the peer capables, these two new
peer capables should also be included. To not break the old capables,
reconf_capable takes the old hostname_address bit, and intl_capable
uses the higher available bit in sctpi_peer_capable.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/socket.c

index 079e726..cda8c28 100644 (file)
@@ -5192,10 +5192,11 @@ int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
        info->sctpi_peer_rwnd = asoc->peer.rwnd;
        info->sctpi_peer_tag = asoc->c.peer_vtag;
 
-       mask = asoc->peer.ecn_capable << 1;
+       mask = asoc->peer.intl_capable << 1;
+       mask = (mask | asoc->peer.ecn_capable) << 1;
        mask = (mask | asoc->peer.ipv4_address) << 1;
        mask = (mask | asoc->peer.ipv6_address) << 1;
-       mask = mask << 1;
+       mask = (mask | asoc->peer.reconf_capable) << 1;
        mask = (mask | asoc->peer.asconf_capable) << 1;
        mask = (mask | asoc->peer.prsctp_capable) << 1;
        mask = (mask | asoc->peer.auth_capable);