| /* 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() */ |