/* SCTP kernel Implementation: User API extensions. * * opt_info.c * * Distributed under the terms of the LGPL v2.1 as described in * http://www.gnu.org/copyleft/lesser.txt * * This file is part of the user library that offers support for the * SCTP kernel Implementation. The main purpose of this * code if to provide the SCTP Socket API mappings for user * application to interface with the SCTP in kernel. * * This implementation is based on the Socket API Extensions for SCTP * defined in <draft-ietf-tsvwg-sctpsocket-10.txt. * * (C) Copyright IBM Corp. 2003 * Copyright (c) 2002 Intel Corporation. * * Written or modified by: * Ardelle Fan <ardelle.fan@intel.com> */ #include <sys/socket.h> /* struct sockaddr_storage, setsockopt() */ #include <netinet/sctp.h> /* SCTP_SOCKOPT_BINDX_* */ #include <errno.h> /* Support the sctp_opt_info() interface. * * See Sockets API Extensions for SCTP. Section 7. * * Pass sctp option information pass both in to and out of the SCTP stack. * This is a new SCTP API described in the section 7 of the Sockets API * Extensions for SCTP. This is implemented using the getsockopt() interface. */ int sctp_opt_info(int sd, sctp_assoc_t id, int opt, void *arg, socklen_t *size) { switch (opt) { case SCTP_RTOINFO: case SCTP_ASSOCINFO: case SCTP_INITMSG: case SCTP_NODELAY: case SCTP_AUTOCLOSE: case SCTP_PRIMARY_ADDR: case SCTP_DISABLE_FRAGMENTS: case SCTP_PEER_ADDR_PARAMS: case SCTP_DEFAULT_SEND_PARAM: case SCTP_EVENTS: case SCTP_I_WANT_MAPPED_V4_ADDR: case SCTP_MAXSEG: case SCTP_STATUS: case SCTP_GET_PEER_ADDR_INFO: case SCTP_AUTH_ACTIVE_KEY: case SCTP_PEER_AUTH_CHUNKS: case SCTP_LOCAL_AUTH_CHUNKS: *(sctp_assoc_t *)arg = id; return getsockopt(sd, IPPROTO_SCTP, opt, arg, size); default: return ENOTSUP; } } /* sctp_opt_info() */