aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp/proto.c
diff options
context:
space:
mode:
authorGerrit Renker <gerrit@erg.abdn.ac.uk>2008-09-04 01:30:19 -0400
committerGerrit Renker <gerrit@erg.abdn.ac.uk>2008-09-04 01:45:27 -0400
commit71bb49596bbf4e5a3328e1704d18604e822ba181 (patch)
tree75f64f2f0fea482efc3bdcac407ab187d9e78b5a /net/dccp/proto.c
parent86349c8d9c6892b57aff4549256ab1aa65aed0f0 (diff)
dccp: Query supported CCIDs
This provides a data structure to record which CCIDs are locally supported and three accessor functions: - a test function for internal use which is used to validate CCID requests made by the user; - a copy function so that the list can be used for feature-negotiation; - documented getsockopt() support so that the user can query capabilities. The data structure is a table which is filled in at compile-time with the list of available CCIDs (which in turn depends on the Kconfig choices). Using the copy function for cloning the list of supported CCIDs is useful for feature negotiation, since the negotiation is now with the full list of available CCIDs (e.g. {2, 3}) instead of the default value {2}. This means negotiation will not fail if the peer requests to use CCID3 instead of CCID2. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Diffstat (limited to 'net/dccp/proto.c')
-rw-r--r--net/dccp/proto.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/dccp/proto.c b/net/dccp/proto.c
index 01332fe7a99a..b4b10cbd8880 100644
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -649,6 +649,8 @@ static int do_dccp_getsockopt(struct sock *sk, int level, int optname,
649 case DCCP_SOCKOPT_GET_CUR_MPS: 649 case DCCP_SOCKOPT_GET_CUR_MPS:
650 val = dp->dccps_mss_cache; 650 val = dp->dccps_mss_cache;
651 break; 651 break;
652 case DCCP_SOCKOPT_AVAILABLE_CCIDS:
653 return ccid_getsockopt_builtin_ccids(sk, len, optval, optlen);
652 case DCCP_SOCKOPT_SERVER_TIMEWAIT: 654 case DCCP_SOCKOPT_SERVER_TIMEWAIT:
653 val = dp->dccps_server_timewait; 655 val = dp->dccps_server_timewait;
654 break; 656 break;