Changeset 4718:eff5b46526d0 in roaraudio


Ignore:
Timestamp:
01/12/11 13:14:06 (11 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added VIO based direct access to SYSIO [gs]etsockopt()

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • configure

    r4705 r4718  
    14211421test_func_defmake ROAR_HAVE_GETSOCKNAME getsockname 'getsockname(0, 0, 0)'   -- sys/socket.h 
    14221422test_func_defmake ROAR_HAVE_GETPEERNAME getpeername 'getpeername(0, 0, 0)'   -- sys/socket.h 
     1423test_func_defmake ROAR_HAVE_GETSOCKOPT getsockopt 'getsockopt(0, 0, 0, (void*)0, (void*)0)' -- sys/types.h sys/socket.h 
     1424test_func_defmake ROAR_HAVE_SETSOCKOPT setsockopt 'setsockopt(0, 0, 0, (void*)0, (void*)0)' -- sys/types.h sys/socket.h 
    14231425test_func_defmake ROAR_HAVE_RAND      rand      'rand()'                     -- stdlib.h 
    14241426test_func_defmake ROAR_HAVE_RAND_R    rand_r    'rand_r((unsigned int*)0)'   -- stdlib.h 
  • include/libroar/vio_ctl.h

    r4708 r4718  
    8383#define ROAR_VIO_CTL_GET_SOCKNAME        (ROAR_VIO_CTL_GENERIC|ROAR_VIO_CTL_GET|0x0188) /* getsockname() */ 
    8484#define ROAR_VIO_CTL_GET_PEERNAME        (ROAR_VIO_CTL_GENERIC|ROAR_VIO_CTL_GET|0x018C) /* getpeername() */ 
     85#define ROAR_VIO_CTL_GET_SYSIO_SOCKOPT   (ROAR_VIO_CTL_GENERIC|ROAR_VIO_CTL_GET|0x0190) /* getsockopt() */ 
     86#define ROAR_VIO_CTL_SET_SYSIO_SOCKOPT   (ROAR_VIO_CTL_GENERIC|ROAR_VIO_CTL_SET|0x0190) /* setsockopt() */ 
    8587 
    8688// more about network based protocols: 
     
    150152 long long int   cmd; 
    151153 void          * argp; 
     154}; 
     155 
     156struct roar_vio_sysio_sockopt { 
     157 int         level; 
     158 int         optname; 
     159 void      * optval; 
     160 socklen_t   optlen; 
    152161}; 
    153162 
  • libroar/vio.c

    r4708 r4718  
    367367 struct roar_vio_sysio_ioctl * sysioctl; 
    368368#endif 
     369#if defined(ROAR_HAVE_GETSOCKOPT) || defined(ROAR_HAVE_SETSOCKOPT) 
     370 struct roar_vio_sysio_sockopt  * syssockopt; 
     371#endif 
    369372 int tmp; 
    370373 int s_r = 0, s_w = 0; 
     
    557560   break; 
    558561#endif 
     562#ifdef ROAR_HAVE_GETSOCKOPT 
     563  case ROAR_VIO_CTL_GET_SYSIO_SOCKOPT: 
     564    syssockopt = data; 
     565    return getsockopt(roar_vio_get_fh(vio), syssockopt->level, syssockopt->optname, syssockopt->optval, &(syssockopt->optlen)); 
     566   break; 
     567#endif 
     568#ifdef ROAR_HAVE_SETSOCKOPT 
     569  case ROAR_VIO_CTL_SET_SYSIO_SOCKOPT: 
     570    syssockopt = data; 
     571    return setsockopt(roar_vio_get_fh(vio), syssockopt->level, syssockopt->optname, syssockopt->optval, syssockopt->optlen); 
     572   break; 
     573#endif 
    559574 } 
    560575 
Note: See TracChangeset for help on using the changeset viewer.