Changeset 501:985357040570 in roaraudio
- Timestamp:
- 08/14/08 17:51:30 (16 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/libroar.h
r474 r501 12 12 #include <netinet/in.h> 13 13 #include <netinet/ip.h> 14 #ifdef ROAR_HAVE_LIBDNET 15 #include <netdnet/dn.h> 16 #include <netdnet/dnetdb.h> 17 #endif 14 18 15 19 #include "basic.h" -
include/libroar/socket.h
r378 r501 19 19 #define ROAR_SOCKET_TYPE_UDP 5 20 20 #define ROAR_SOCKET_TYPE_GENSTR 6 /* generic stream: TCP or UNIX */ 21 #define ROAR_SOCKET_TYPE_DECNET 7 /* DECnet */ 21 22 22 23 #define ROAR_SOCKET_TYPE_MAX 4 … … 46 47 int roar_socket_open_socks4a(int mode, int fh, char * host, int port); 47 48 49 #if 0 50 #ifdef ROAR_HAVE_LIBDNET 51 int roar_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 52 #else 53 #define roar_accept accept 54 #endif 55 #endif 56 #define roar_accept accept 57 48 58 #endif 49 59 -
libroar/Makefile
r485 r501 1 include ../Makefile.conf 2 1 3 TARGETS=libroar.so 2 4 OBJS=libroar.o basic.o stream.o simple.o auth.o socket.o ctl.o buffer.o convert.o poly.o meta.o file.o midi.o acl.o … … 5 7 INCLUDE = -I../include -I../include/libroar 6 8 CFLAGS = -g -Wall -O2 $(DEFINES) $(INCLUDE) -fPIC 7 LDFLAGS = -g -shared $(LDPATH) -lm9 LDFLAGS = -g -shared $(LDPATH) $(lib_dnet) -lm 8 10 9 11 all: ${TARGETS} -
libroar/basic.c
r448 r501 9 9 int port = 0; 10 10 int fh = -1; 11 int is_decnet = 0; 11 12 12 13 if ( server == NULL && (roar_server = getenv("ROAR_SERVER")) != NULL ) … … 35 36 } else { 36 37 /* connect via (char*)server */ 37 for (i = 0; server[i] != 0; i++) { 38 if ( server[i] == ':' ) { 39 port = atoi(server+i+1); 40 server[i] = 0; 41 break; 38 // find a port: 39 if ( *server != '/' ) { // don't test AF_UNIX sockets for ports 40 for (i = 0; server[i] != 0; i++) { 41 if ( server[i] == ':' ) { 42 if ( server[i+1] == ':' ) { // DECnet, leave unchanged 43 is_decnet = 1; 44 break; 45 } 46 47 port = atoi(server+i+1); 48 server[i] = 0; 49 break; 50 } 42 51 } 43 52 } 44 53 45 if ( port ) {54 if ( port || is_decnet ) { 46 55 fh = roar_socket_connect(server, port); 47 56 // restore the original string … … 144 153 int roar_recv_message (struct roar_connection * con, struct roar_message * mes, char ** data) { 145 154 char buf[_ROAR_MESS_BUF_LEN]; 155 /* 156 #ifdef ROAR_HAVE_LIBDNET 157 int len; 158 #endif 159 */ 146 160 147 161 ROAR_DBG("roar_recv_message(*): try to get a response form the server..."); … … 150 164 *data = NULL; 151 165 166 /* 167 #ifdef ROAR_HAVE_LIBDNET 168 if ( (len = read(con->fh, buf, _ROAR_MESS_BUF_LEN)) != _ROAR_MESS_BUF_LEN ) { 169 if ( len != 0 ) 170 return -1; 171 172 usleep(2000); 173 174 if ( read(con->fh, buf, _ROAR_MESS_BUF_LEN) != _ROAR_MESS_BUF_LEN ) 175 return -1; 176 } 177 #else 178 */ 152 179 if ( read(con->fh, buf, _ROAR_MESS_BUF_LEN) != _ROAR_MESS_BUF_LEN ) 153 180 return -1; 181 /* 182 #endif 183 */ 154 184 155 185 ROAR_DBG("roar_recv_message(*): Got a header"); -
libroar/socket.c
r442 r501 139 139 //unsigned int host_div = 0; 140 140 int (*mode_func)(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) = connect; // default is to connect 141 #ifdef ROAR_HAVE_LIBDNET 142 char obj[80]; 143 char * del; 144 #endif 141 145 142 146 if ( mode == MODE_LISTEN ) … … 149 153 } else if ( strcmp(host, "+fork") == 0 ) { 150 154 type = ROAR_SOCKET_TYPE_FORK; 155 } else if ( strstr(host, "::") != NULL ) { 156 type = ROAR_SOCKET_TYPE_DECNET; 151 157 } 152 158 } … … 155 161 ROAR_DBG("roar_socket_open(*): type=%s, host='%s', port=%i", 156 162 type == ROAR_SOCKET_TYPE_UNIX ? "UNIX" : "INET", host, port); 163 164 if ( type == ROAR_SOCKET_TYPE_DECNET ) { 165 if ( mode == MODE_LISTEN ) { 166 return -1; // listen sockets on DECnet are not supportet at the moment 167 } else { 168 #ifdef ROAR_HAVE_LIBDNET 169 // There is nothing wrong in this case to use dnet_conn() so we do. 170 del = strstr(host, "::"); 171 *del = 0; 172 173 if ( *(del+2) == '#' ) { // assume we have node::#num 174 port = atoi(del+2); 175 } 176 177 if ( port ) { 178 sprintf(obj, "%i", port); // no need for snprintf() as dec(port) is smaller than obj[] 179 } else { 180 *obj = 0; 181 strncat(obj, del+2, 79); 182 } 183 184 fh = dnet_conn(host, obj, SOCK_STREAM, 0 ,0 ,0 , 0); 185 *del = ':'; 186 return fh; 187 #else 188 return -1; // no decnet support 189 #endif 190 } 191 } 157 192 158 193 memset(&socket_addr , 0, sizeof(socket_addr)); … … 348 383 } 349 384 385 #if 0 386 #ifdef ROAR_HAVE_LIBDNET 387 int roar_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) { 388 struct sockaddr_dn sockaddr_d, * sockaddr_p = &sockaddr_d; 389 socklen_t len = *addrlen; 390 int r; 391 392 if ( len < sizeof(struct sockaddr_dn) ) { 393 len = sizeof(struct sockaddr_dn); 394 r = accept(sockfd, (struct sockaddr *) sockaddr_p, &len); 395 396 memcpy((void*)addr, (void*) sockaddr_p, len > *addrlen ? *addrlen : len); 397 398 if ( len < *addrlen ) 399 *addrlen = len; 400 401 } else { 402 r = accept(sockfd, addr, addrlen); 403 sockaddr_p = (struct sockaddr_dn *) addr; 404 len = *addrlen; 405 } 406 407 if ( r != -1 ) { 408 // do dnet_accept(), but it does nothing at the moment. 409 } 410 411 return r; 412 } 413 #endif 414 #endif 415 350 416 //ll -
roard/clients.c
r498 r501 95 95 96 96 int clients_set_fh (int id, int fh) { 97 #ifdef ROAR_HAVE_LIBDNET 98 struct sockaddr_dn sockaddr_d; 99 socklen_t len = sizeof(struct sockaddr_dn); 100 #endif 101 97 102 if ( g_clients[id] == NULL ) 98 103 return -1; 99 104 100 105 g_clients[id]->fh = fh; 106 107 #ifdef ROAR_HAVE_LIBDNET 108 if ( getsockname(fh, (struct sockaddr *)&sockaddr_d, &len) != -1 ) { 109 if ( sockaddr_d.sdn_family == AF_DECnet ) 110 roar_socket_nonblock(fh, ROAR_SOCKET_BLOCK); 111 } 112 #endif 101 113 102 114 return 0; -
roard/roard.c
r450 r501 55 55 " --no-listen - Do not listen for new clients (only usefull for relaing)\n" 56 56 " --client-fh - Comunicate with a client over this handle\n" 57 " (only usefull for relaing)\n", 57 " (only usefull for relaing)\n" 58 " --close-fh - Closes the given fh\n", 58 59 ROAR_DEFAULT_SOCKGRP 59 60 ); … … 228 229 return 1; 229 230 } 231 } else if ( strcmp(k, "--close-fh") == 0 ) { 232 close(atoi(argv[++i])); 230 233 231 234 } else {
Note: See TracChangeset
for help on using the changeset viewer.