Source: sctpsocketwrapper.h


Annotated List
Files
Globals
Hierarchy
Index
/*
 *  $Id: sctpsocketwrapper_h.html,v 1.2 2001/08/17 12:07:32 dreibh Exp $
 *
 * SCTP implementation according to RFC 2960.
 * Copyright (C) 1999-2001 by Thomas Dreibholz
 *
 * Realized in co-operation between Siemens AG
 * and University of Essen, Institute of Computer Networking Technology.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * There are two mailinglists available at www.sctp.de which should be used for
 * any discussion related to this implementation.
 *
 * Contact: discussion@sctp.de
 *          dreibh@exp-math.uni-essen.de
 *
 * Purpose: SCTP Socket Wrapper
 *
 */



#ifndef SCTPSOCKETWRAPPER_H
#define SCTPSOCKETWRAPPER_H


#ifndef IPPROTO_SCTP
#define IPPROTO_SCTP 132
#endif



/**
  * Check, if SCTP support is available.
  *
  * @return true, if SCTP is available; false otherwise.
  */
bool checkSCTP();




#ifdef USE_SCTP_WRAPPER


#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>


#ifdef __cplusplus
extern "C" {
#endif


int ext_socket(int domain, int type, int protocol);
int ext_bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
int ext_connect(int sockfd, const struct sockaddr *serv_addr,
               socklen_t addrlen);
int ext_listen(int s, int backlog);
int ext_accept(int s,  struct  sockaddr  *addr,  socklen_t *addrlen);
int ext_shutdown(int s, int how);
int ext_close(int fd);
int ext_getsockname(int sockfd, struct sockaddr* name, socklen_t* namelen);
int ext_getpeername(int sockfd, struct sockaddr* name, socklen_t* namelen);
int ext_fcntl(int fd, int cmd = 0, struct flock * lock = NULL);
int ext_ioctl(int d, int request, const void* argp);
int ext_getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
int ext_setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
int ext_recv(int s, void *buf, size_t len, int flags);
int ext_recvfrom(int  s,  void  *buf,  size_t len, int flags,
                struct sockaddr *from, socklen_t *fromlen);
int ext_recvmsg(int s, struct msghdr *msg, int flags);
int ext_send(int s, const void *msg, size_t len, int flags);
int ext_sendto(int s, const void *msg, size_t len, int flags,
              const struct sockaddr *to, socklen_t tolen);
int ext_sendmsg(int s, const struct msghdr *msg, int flags);
ssize_t ext_read(int fd, void *buf, size_t count);
ssize_t ext_write(int fd, const void *buf, size_t count);


#define SCTP_BINDX_ADD_ADDR 1
#define SCTP_BINDX_REM_ADDR 2

int ext_bindx(int                      sockfd,
             struct sockaddr_storage* addrs,
             int                      addrcnt,
             int                      flags);

#ifdef __cplusplus
}
#endif


#else


#define ext_socket(a,b,c) ::socket(a,b,c)
#define ext_bind(a,b,c) ::bind(a,b,c)
#define ext_bindx(a,b,c,d) ::bindx(a,b,c,d)
#define ext_connect(a,b,c) ::connect(a,b,c)
#define ext_listen(a,b) ::listen(a,b)
#define ext_accept(a,b,c) ::accept(a,b,c)
#define ext_shutdown(a,b) ::shutdown(a,b)
#define ext_close(a) ::close(a)
#define ext_getsockname(a,b,c) ::getsockname(a,b,c)
#define ext_getpeername(a,b,c) ::getpeername(a,b,c)
#define ext_fcntl(a,b,c) ::fcntl(a,b,c)
#define ext_ioctl(a,b,c) ::ioctl(a,b,c)
#define ext_getsockopt(a,b,c,d,e) ::getsockopt(a,b,c,d,e)
#define ext_setsockopt(a,b,c,d,e) ::setsockopt(a,b,c,d,e)
#define ext_recv(a,b,c,d) ::recv(a,b,c,d)
#define ext_recvfrom(a,b,c,d,e,f) ::recvfrom(a,b,c,d,e,f)
#define ext_recvmsg(a,b,c) ::recvmsg(a,b,c)
#define ext_send(a,b,c,d) ::send(a,b,c,d)
#define ext_sendto(a,b,c,d,e,f) ::sendto(a,b,c,d,e,f)
#define ext_sendmsg(a,b,c) ::sendmsg(a,b,c)
#define ext_read(a,b,c) ::read(a,b,c)
#define ext_write(a,b,c) ::write(a,b,c)

int bindx(int                      sockfd,
          struct sockaddr_storage* addrs,
          int                      addrcnt,
          int                      flags);


#endif


#endif

Generated by: dreibh@kappes on Fri Aug 17 14:08:47 2001, using kdoc 2.0a53.