source: roaraudio/include/libroar/vio_dstr.h @ 4708:c9d40761088a

Last change on this file since 4708:c9d40761088a was 4708:c9d40761088a, checked in by phi, 13 years ago

updated copyright statements

File size: 8.5 KB
RevLine 
[1321]1//vio_dstr.h:
2
3/*
[4708]4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2011
[1321]5 *
6 *  This file is part of libroar a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  libroar is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
[3517]21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
[1321]23 *
24 *  NOTE for everyone want's to change something and send patches:
25 *  read README and HACKING! There a addition information on
26 *  the license of this document you need to read before you send
27 *  any patches.
28 *
29 *  NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
30 *  or libpulse*:
31 *  The libs libroaresd, libroararts and libroarpulse link this lib
32 *  and are therefore GPL. Because of this it may be illigal to use
33 *  them with any software that uses libesd, libartsc or libpulse*.
34 */
35
36#ifndef _LIBROARVIO_DSTR_H_
37#define _LIBROARVIO_DSTR_H_
38
39#include "libroar.h"
40
[1323]41#define ROAR_VIO_DEF_TYPE_EOL            -1
42#define ROAR_VIO_DEF_TYPE_NONE            0
43#define ROAR_VIO_DEF_TYPE_FILE            1
44#define ROAR_VIO_DEF_TYPE_SOCKET          2
45#define ROAR_VIO_DEF_TYPE_FH              3
46#define ROAR_VIO_DEF_TYPE_SOCKETFH        4
47
48#define ROAR_VIO_DSTR_OBJGT_INTERNAL      0x0000
49#define ROAR_VIO_DSTR_OBJGT_GEN           0x0100
50#define ROAR_VIO_DSTR_OBJGT_SOCKET        0x0200
51#define ROAR_VIO_DSTR_OBJGT_PROXY         0x0300
52#define ROAR_VIO_DSTR_OBJGT_COMP          0x0400 /* compression */
53#define ROAR_VIO_DSTR_OBJGT_CRYPT         0x0500
54#define ROAR_VIO_DSTR_OBJGT_PROTO         0x0600 /* protocolls like HTTP and Gopher */
[3309]55#define ROAR_VIO_DSTR_OBJGT_CONTENT       0x0700 /* things changeing the content of the data */
56#define ROAR_VIO_DSTR_OBJGT_MUX           0x0800 /* muxers and demuxers */
[1323]57#define ROAR_VIO_DSTR_OBJGT_SPECAL        0xff00
58
59#define ROAR_VIO_DSTR_OBJT_EOL           -1
60#define ROAR_VIO_DSTR_OBJT_NONE           0
61#define ROAR_VIO_DSTR_OBJT_INTERNAL       1
62
63#define ROAR_VIO_DSTR_OBJT_FILE           (0x01|ROAR_VIO_DSTR_OBJGT_GEN)
64#define ROAR_VIO_DSTR_OBJT_FH             (0x02|ROAR_VIO_DSTR_OBJGT_GEN)
[1328]65#define ROAR_VIO_DSTR_OBJT_FD             ROAR_VIO_DSTR_OBJT_FH
[1323]66#define ROAR_VIO_DSTR_OBJT_SOCKETFH       (0x03|ROAR_VIO_DSTR_OBJGT_GEN)
67/* some space to add memory FHs and the like */
68#define ROAR_VIO_DSTR_OBJT_PASS           (0x10|ROAR_VIO_DSTR_OBJGT_GEN)
69#define ROAR_VIO_DSTR_OBJT_RE             (0x11|ROAR_VIO_DSTR_OBJGT_GEN)
[3309]70#define ROAR_VIO_DSTR_OBJT_JUMBO          (0x12|ROAR_VIO_DSTR_OBJGT_GEN)
[1323]71#define ROAR_VIO_DSTR_OBJT_EXEC           (0x20|ROAR_VIO_DSTR_OBJGT_GEN)
72
73#define ROAR_VIO_DSTR_OBJT_SOCKET         (0x01|ROAR_VIO_DSTR_OBJGT_SOCKET)
74#define ROAR_VIO_DSTR_OBJT_UNIX           (0x02|ROAR_VIO_DSTR_OBJGT_SOCKET)
75#define ROAR_VIO_DSTR_OBJT_DECNET         (0x10|ROAR_VIO_DSTR_OBJGT_SOCKET)
76#define ROAR_VIO_DSTR_OBJT_TCP            (0x21|ROAR_VIO_DSTR_OBJGT_SOCKET)
77#define ROAR_VIO_DSTR_OBJT_UDP            (0x22|ROAR_VIO_DSTR_OBJGT_SOCKET)
78#define ROAR_VIO_DSTR_OBJT_TCP6           (0x31|ROAR_VIO_DSTR_OBJGT_SOCKET)
79#define ROAR_VIO_DSTR_OBJT_UDP6           (0x32|ROAR_VIO_DSTR_OBJGT_SOCKET)
80
81#define ROAR_VIO_DSTR_OBJT_SOCKS          (0x10|ROAR_VIO_DSTR_OBJGT_PROXY)
82#define ROAR_VIO_DSTR_OBJT_SOCKS4         (0x14|ROAR_VIO_DSTR_OBJGT_PROXY)
83#define ROAR_VIO_DSTR_OBJT_SOCKS4A        (0x1a|ROAR_VIO_DSTR_OBJGT_PROXY)
84#define ROAR_VIO_DSTR_OBJT_SOCKS4D        (0x1d|ROAR_VIO_DSTR_OBJGT_PROXY)
85#define ROAR_VIO_DSTR_OBJT_SOCKS5         (0x15|ROAR_VIO_DSTR_OBJGT_PROXY)
86#define ROAR_VIO_DSTR_OBJT_SSH            (0x21|ROAR_VIO_DSTR_OBJGT_PROXY)
87//#define ROAR_VIO_DSTR_OBJT_HTTP           (0x31|ROAR_VIO_DSTR_OBJGT_PROXY)
88
89//#define ROAR_VIO_DSTR_OBJT_HTTP           (0x10|ROAR_VIO_DSTR_OBJGT_PROTO)
90#define ROAR_VIO_DSTR_OBJT_HTTP09         (0x11|ROAR_VIO_DSTR_OBJGT_PROTO)
91#define ROAR_VIO_DSTR_OBJT_HTTP10         (0x12|ROAR_VIO_DSTR_OBJGT_PROTO)
92#define ROAR_VIO_DSTR_OBJT_HTTP11         (0x13|ROAR_VIO_DSTR_OBJGT_PROTO)
93#define ROAR_VIO_DSTR_OBJT_HTTP           ROAR_VIO_DSTR_OBJT_HTTP11
94#define ROAR_VIO_DSTR_OBJT_GOPHER         (0x21|ROAR_VIO_DSTR_OBJGT_PROTO)
[1349]95#define ROAR_VIO_DSTR_OBJT_GOPHER_PLUS    (0x22|ROAR_VIO_DSTR_OBJGT_PROTO)
[3078]96#define ROAR_VIO_DSTR_OBJT_ICY            (0x31|ROAR_VIO_DSTR_OBJGT_PROTO)
[3277]97#define ROAR_VIO_DSTR_OBJT_RTP2           (0x42|ROAR_VIO_DSTR_OBJGT_PROTO)
98#define ROAR_VIO_DSTR_OBJT_RTP            ROAR_VIO_DSTR_OBJT_RTP2
[1323]99
100/*
101#define ROAR_VIO_DSTR_OBJGT_CRYPT         0x0500
102*/
103
104#define ROAR_VIO_DSTR_OBJT_GZIP           (0x10|ROAR_VIO_DSTR_OBJGT_COMP)
105#define ROAR_VIO_DSTR_OBJT_BZIP2          (0x22|ROAR_VIO_DSTR_OBJGT_COMP)
106
107#define ROAR_VIO_DSTR_OBJT_PGP            (0x10|ROAR_VIO_DSTR_OBJGT_CRYPT)
108#define ROAR_VIO_DSTR_OBJT_PGP_ENC        (0x11|ROAR_VIO_DSTR_OBJGT_CRYPT)
[1325]109#define ROAR_VIO_DSTR_OBJT_PGP_STORE      (0x12|ROAR_VIO_DSTR_OBJGT_CRYPT)
[1323]110#define ROAR_VIO_DSTR_OBJT_SSL1           (0x21|ROAR_VIO_DSTR_OBJGT_CRYPT)
111#define ROAR_VIO_DSTR_OBJT_SSL2           (0x22|ROAR_VIO_DSTR_OBJGT_CRYPT)
112#define ROAR_VIO_DSTR_OBJT_SSL3           (0x23|ROAR_VIO_DSTR_OBJGT_CRYPT)
113#define ROAR_VIO_DSTR_OBJT_TLS            (0x2a|ROAR_VIO_DSTR_OBJGT_CRYPT)
114#define ROAR_VIO_DSTR_OBJT_SSLTLS         ROAR_VIO_DSTR_OBJT_TLS
115
[3309]116#define ROAR_VIO_DSTR_OBJT_TRANSCODE      (0x10|ROAR_VIO_DSTR_OBJGT_CONTENT)
117
118#define ROAR_VIO_DSTR_OBJT_RAUM           (0x11|ROAR_VIO_DSTR_OBJGT_MUX)
119#define ROAR_VIO_DSTR_OBJT_OGG            (0x12|ROAR_VIO_DSTR_OBJGT_MUX)
120#define ROAR_VIO_DSTR_OBJT_TAR            (0x13|ROAR_VIO_DSTR_OBJGT_MUX)
121
[1323]122#define ROAR_VIO_DSTR_OBJT_MAGIC          (0x01|ROAR_VIO_DSTR_OBJGT_SPECAL)
[3115]123#define ROAR_VIO_DSTR_OBJT_TANTALOS       (0x02|ROAR_VIO_DSTR_OBJGT_SPECAL)
[1323]124
125
126struct roar_vio_defaults {
127 int type;
128
129 mode_t o_mode;
130 int    o_flags;
131
132 union {
133  char *   file;
134  int      fh;
135  struct {
136          int               domain;
137          int               type;
138          char            * host;
[1333]139          union {
140                 struct sockaddr     sa;
[1432]141#ifdef ROAR_HAVE_IPV4
[1333]142                 struct sockaddr_in  in;
[1432]143#endif
[1333]144#ifdef ROAR_HAVE_UNIX
145                 struct sockaddr_un  un;
146#endif
147#ifdef ROAR_HAVE_LIBDNET
148                 struct sockaddr_dn  dn;
149#endif
150#ifdef ROAR_HAVE_IPV6
151                 struct sockaddr_in6 in6;
152#endif
153#ifdef ROAR_HAVE_IPX
154                 struct sockaddr_ipx ipx;
155#endif
156                } sa;
[1323]157          socklen_t         len;
158         } socket;
159 } d;
160};
161
[1325]162#define ROAR_VIO_DSTR_MAX_OBJ_PER_CHAIN 16
163
[1323]164struct roar_vio_dstr_chain {
165 int    type;
166 char * opts;
167 char * dst;
168 int    need_vio;
169 struct roar_vio_defaults * def;
170 struct roar_vio_calls    * vio;
[1325]171 struct roar_vio_defaults   store_def;
[1323]172};
173
174int     roar_vio_dstr_get_type(char * str);
175char *  roar_vio_dstr_get_name(int type);
176
[3312]177int     roar_vio_dstr_register_type(int   type,
178                                    char *name,
179                                    int (*setdef) (struct roar_vio_dstr_chain * cur,
180                                                   struct roar_vio_dstr_chain * next),
181                                    int (*openvio)(struct roar_vio_calls      * calls,
182                                                   struct roar_vio_calls      * dst,
183                                                   struct roar_vio_dstr_chain * cur));
184
[1323]185int     roar_vio_dstr_init_defaults (struct roar_vio_defaults * def, int type, int o_flags, mode_t o_mode);
[1353]186int     roar_vio_dstr_init_defaults_c (struct roar_vio_defaults * def, int type, struct roar_vio_defaults * odef, int o_flags);
[1323]187
[3292]188int     roar_vio_open_default (struct roar_vio_calls * calls, struct roar_vio_defaults * def, char * opts);
[1330]189
[1323]190int     roar_vio_open_dstr    (struct roar_vio_calls * calls, char * dstr, struct roar_vio_defaults * def, int dnum);
191int     roar_vio_open_dstr_vio(struct roar_vio_calls * calls, char * dstr, struct roar_vio_defaults * def, int dnum, struct roar_vio_calls * vio);
192
193int     roar_vio_dstr_parse_opts(struct roar_vio_dstr_chain * chain);
[1325]194int     roar_vio_dstr_set_defaults(struct roar_vio_dstr_chain * chain, int len, struct roar_vio_defaults * def, int dnum);
[1323]195int     roar_vio_dstr_build_chain(struct roar_vio_dstr_chain * chain, struct roar_vio_calls * calls, struct roar_vio_calls * vio);
196
[1321]197#endif
198
199//ll
Note: See TracBrowser for help on using the repository browser.