16f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu/* SCTP kernel Implementation: User API extensions. 289de9aa86469604a61fb72f8073f984442b8c011uid * 389de9aa86469604a61fb72f8073f984442b8c011uid * opt_info.c 489de9aa86469604a61fb72f8073f984442b8c011uid * 589de9aa86469604a61fb72f8073f984442b8c011uid * Distributed under the terms of the LGPL v2.1 as described in 66f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu * http://www.gnu.org/copyleft/lesser.txt 789de9aa86469604a61fb72f8073f984442b8c011uid * 889de9aa86469604a61fb72f8073f984442b8c011uid * This file is part of the user library that offers support for the 96f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu * SCTP kernel Implementation. The main purpose of this 1089de9aa86469604a61fb72f8073f984442b8c011uid * code if to provide the SCTP Socket API mappings for user 1189de9aa86469604a61fb72f8073f984442b8c011uid * application to interface with the SCTP in kernel. 1289de9aa86469604a61fb72f8073f984442b8c011uid * 1389de9aa86469604a61fb72f8073f984442b8c011uid * This implementation is based on the Socket API Extensions for SCTP 1464a341fc42c967890a9fb5d8855568e23104bef6mridge * defined in <draft-ietf-tsvwg-sctpsocket-10.txt. 1589de9aa86469604a61fb72f8073f984442b8c011uid * 1689de9aa86469604a61fb72f8073f984442b8c011uid * (C) Copyright IBM Corp. 2003 1789de9aa86469604a61fb72f8073f984442b8c011uid * Copyright (c) 2002 Intel Corporation. 1889de9aa86469604a61fb72f8073f984442b8c011uid * 1989de9aa86469604a61fb72f8073f984442b8c011uid * Written or modified by: 2089de9aa86469604a61fb72f8073f984442b8c011uid * Ardelle Fan <ardelle.fan@intel.com> 2189de9aa86469604a61fb72f8073f984442b8c011uid */ 2289de9aa86469604a61fb72f8073f984442b8c011uid 236f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu#include <sys/socket.h> /* struct sockaddr_storage, setsockopt() */ 246f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu#include <netinet/sctp.h> /* SCTP_SOCKOPT_BINDX_* */ 2589de9aa86469604a61fb72f8073f984442b8c011uid#include <errno.h> 2689de9aa86469604a61fb72f8073f984442b8c011uid 2789de9aa86469604a61fb72f8073f984442b8c011uid/* Support the sctp_opt_info() interface. 2889de9aa86469604a61fb72f8073f984442b8c011uid * 2989de9aa86469604a61fb72f8073f984442b8c011uid * See Sockets API Extensions for SCTP. Section 7. 3089de9aa86469604a61fb72f8073f984442b8c011uid * 3189de9aa86469604a61fb72f8073f984442b8c011uid * Pass sctp option information pass both in to and out of the SCTP stack. 3289de9aa86469604a61fb72f8073f984442b8c011uid * This is a new SCTP API described in the section 7 of the Sockets API 3389de9aa86469604a61fb72f8073f984442b8c011uid * Extensions for SCTP. This is implemented using the getsockopt() interface. 3489de9aa86469604a61fb72f8073f984442b8c011uid */ 356f22494d19b605ded308dc0fa713e91cb873f44aSimon Xuint 366f22494d19b605ded308dc0fa713e91cb873f44aSimon Xusctp_opt_info(int sd, sctp_assoc_t id, int opt, void *arg, socklen_t *size) 3789de9aa86469604a61fb72f8073f984442b8c011uid{ 3889de9aa86469604a61fb72f8073f984442b8c011uid switch (opt) { 3989de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_RTOINFO: 4089de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_ASSOCINFO: 4189de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_INITMSG: 4289de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_NODELAY: 4389de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_AUTOCLOSE: 4489de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_PRIMARY_ADDR: 4589de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_DISABLE_FRAGMENTS: 4689de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_PEER_ADDR_PARAMS: 4789de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_DEFAULT_SEND_PARAM: 4889de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_EVENTS: 4989de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_I_WANT_MAPPED_V4_ADDR: 5089de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_MAXSEG: 5189de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_STATUS: 5289de9aa86469604a61fb72f8073f984442b8c011uid case SCTP_GET_PEER_ADDR_INFO: 536f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu case SCTP_AUTH_ACTIVE_KEY: 546f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu case SCTP_PEER_AUTH_CHUNKS: 556f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu case SCTP_LOCAL_AUTH_CHUNKS: 566f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu *(sctp_assoc_t *)arg = id; 5789de9aa86469604a61fb72f8073f984442b8c011uid return getsockopt(sd, IPPROTO_SCTP, opt, arg, size); 5889de9aa86469604a61fb72f8073f984442b8c011uid default: 5989de9aa86469604a61fb72f8073f984442b8c011uid return ENOTSUP; 6089de9aa86469604a61fb72f8073f984442b8c011uid } 6189de9aa86469604a61fb72f8073f984442b8c011uid 626f22494d19b605ded308dc0fa713e91cb873f44aSimon Xu} /* sctp_opt_info() */ 63