source: roaraudio/include/libroar/vio_dstr.h @ 3277:26c286f86c41

Last change on this file since 3277:26c286f86c41 was 3277:26c286f86c41, checked in by phi, 14 years ago

added RTP to DSTR API

File size: 7.4 KB
Line 
1//vio_dstr.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009
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
21 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 *  NOTE for everyone want's to change something and send patches:
24 *  read README and HACKING! There a addition information on
25 *  the license of this document you need to read before you send
26 *  any patches.
27 *
28 *  NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
29 *  or libpulse*:
30 *  The libs libroaresd, libroararts and libroarpulse link this lib
31 *  and are therefore GPL. Because of this it may be illigal to use
32 *  them with any software that uses libesd, libartsc or libpulse*.
33 */
34
35#ifndef _LIBROARVIO_DSTR_H_
36#define _LIBROARVIO_DSTR_H_
37
38#include "libroar.h"
39
40#define ROAR_VIO_DEF_TYPE_EOL            -1
41#define ROAR_VIO_DEF_TYPE_NONE            0
42#define ROAR_VIO_DEF_TYPE_FILE            1
43#define ROAR_VIO_DEF_TYPE_SOCKET          2
44#define ROAR_VIO_DEF_TYPE_FH              3
45#define ROAR_VIO_DEF_TYPE_SOCKETFH        4
46
47#define ROAR_VIO_DSTR_OBJGT_INTERNAL      0x0000
48#define ROAR_VIO_DSTR_OBJGT_GEN           0x0100
49#define ROAR_VIO_DSTR_OBJGT_SOCKET        0x0200
50#define ROAR_VIO_DSTR_OBJGT_PROXY         0x0300
51#define ROAR_VIO_DSTR_OBJGT_COMP          0x0400 /* compression */
52#define ROAR_VIO_DSTR_OBJGT_CRYPT         0x0500
53#define ROAR_VIO_DSTR_OBJGT_PROTO         0x0600 /* protocolls like HTTP and Gopher */
54#define ROAR_VIO_DSTR_OBJGT_SPECAL        0xff00
55
56#define ROAR_VIO_DSTR_OBJT_EOL           -1
57#define ROAR_VIO_DSTR_OBJT_NONE           0
58#define ROAR_VIO_DSTR_OBJT_INTERNAL       1
59
60#define ROAR_VIO_DSTR_OBJT_FILE           (0x01|ROAR_VIO_DSTR_OBJGT_GEN)
61#define ROAR_VIO_DSTR_OBJT_FH             (0x02|ROAR_VIO_DSTR_OBJGT_GEN)
62#define ROAR_VIO_DSTR_OBJT_FD             ROAR_VIO_DSTR_OBJT_FH
63#define ROAR_VIO_DSTR_OBJT_SOCKETFH       (0x03|ROAR_VIO_DSTR_OBJGT_GEN)
64/* some space to add memory FHs and the like */
65#define ROAR_VIO_DSTR_OBJT_PASS           (0x10|ROAR_VIO_DSTR_OBJGT_GEN)
66#define ROAR_VIO_DSTR_OBJT_RE             (0x11|ROAR_VIO_DSTR_OBJGT_GEN)
67#define ROAR_VIO_DSTR_OBJT_EXEC           (0x20|ROAR_VIO_DSTR_OBJGT_GEN)
68
69#define ROAR_VIO_DSTR_OBJT_SOCKET         (0x01|ROAR_VIO_DSTR_OBJGT_SOCKET)
70#define ROAR_VIO_DSTR_OBJT_UNIX           (0x02|ROAR_VIO_DSTR_OBJGT_SOCKET)
71#define ROAR_VIO_DSTR_OBJT_DECNET         (0x10|ROAR_VIO_DSTR_OBJGT_SOCKET)
72#define ROAR_VIO_DSTR_OBJT_TCP            (0x21|ROAR_VIO_DSTR_OBJGT_SOCKET)
73#define ROAR_VIO_DSTR_OBJT_UDP            (0x22|ROAR_VIO_DSTR_OBJGT_SOCKET)
74#define ROAR_VIO_DSTR_OBJT_TCP6           (0x31|ROAR_VIO_DSTR_OBJGT_SOCKET)
75#define ROAR_VIO_DSTR_OBJT_UDP6           (0x32|ROAR_VIO_DSTR_OBJGT_SOCKET)
76
77#define ROAR_VIO_DSTR_OBJT_SOCKS          (0x10|ROAR_VIO_DSTR_OBJGT_PROXY)
78#define ROAR_VIO_DSTR_OBJT_SOCKS4         (0x14|ROAR_VIO_DSTR_OBJGT_PROXY)
79#define ROAR_VIO_DSTR_OBJT_SOCKS4A        (0x1a|ROAR_VIO_DSTR_OBJGT_PROXY)
80#define ROAR_VIO_DSTR_OBJT_SOCKS4D        (0x1d|ROAR_VIO_DSTR_OBJGT_PROXY)
81#define ROAR_VIO_DSTR_OBJT_SOCKS5         (0x15|ROAR_VIO_DSTR_OBJGT_PROXY)
82#define ROAR_VIO_DSTR_OBJT_SSH            (0x21|ROAR_VIO_DSTR_OBJGT_PROXY)
83//#define ROAR_VIO_DSTR_OBJT_HTTP           (0x31|ROAR_VIO_DSTR_OBJGT_PROXY)
84
85//#define ROAR_VIO_DSTR_OBJT_HTTP           (0x10|ROAR_VIO_DSTR_OBJGT_PROTO)
86#define ROAR_VIO_DSTR_OBJT_HTTP09         (0x11|ROAR_VIO_DSTR_OBJGT_PROTO)
87#define ROAR_VIO_DSTR_OBJT_HTTP10         (0x12|ROAR_VIO_DSTR_OBJGT_PROTO)
88#define ROAR_VIO_DSTR_OBJT_HTTP11         (0x13|ROAR_VIO_DSTR_OBJGT_PROTO)
89#define ROAR_VIO_DSTR_OBJT_HTTP           ROAR_VIO_DSTR_OBJT_HTTP11
90#define ROAR_VIO_DSTR_OBJT_GOPHER         (0x21|ROAR_VIO_DSTR_OBJGT_PROTO)
91#define ROAR_VIO_DSTR_OBJT_GOPHER_PLUS    (0x22|ROAR_VIO_DSTR_OBJGT_PROTO)
92#define ROAR_VIO_DSTR_OBJT_ICY            (0x31|ROAR_VIO_DSTR_OBJGT_PROTO)
93#define ROAR_VIO_DSTR_OBJT_RTP2           (0x42|ROAR_VIO_DSTR_OBJGT_PROTO)
94#define ROAR_VIO_DSTR_OBJT_RTP            ROAR_VIO_DSTR_OBJT_RTP2
95
96/*
97#define ROAR_VIO_DSTR_OBJGT_CRYPT         0x0500
98*/
99
100#define ROAR_VIO_DSTR_OBJT_GZIP           (0x10|ROAR_VIO_DSTR_OBJGT_COMP)
101#define ROAR_VIO_DSTR_OBJT_BZIP2          (0x22|ROAR_VIO_DSTR_OBJGT_COMP)
102
103#define ROAR_VIO_DSTR_OBJT_PGP            (0x10|ROAR_VIO_DSTR_OBJGT_CRYPT)
104#define ROAR_VIO_DSTR_OBJT_PGP_ENC        (0x11|ROAR_VIO_DSTR_OBJGT_CRYPT)
105#define ROAR_VIO_DSTR_OBJT_PGP_STORE      (0x12|ROAR_VIO_DSTR_OBJGT_CRYPT)
106#define ROAR_VIO_DSTR_OBJT_SSL1           (0x21|ROAR_VIO_DSTR_OBJGT_CRYPT)
107#define ROAR_VIO_DSTR_OBJT_SSL2           (0x22|ROAR_VIO_DSTR_OBJGT_CRYPT)
108#define ROAR_VIO_DSTR_OBJT_SSL3           (0x23|ROAR_VIO_DSTR_OBJGT_CRYPT)
109#define ROAR_VIO_DSTR_OBJT_TLS            (0x2a|ROAR_VIO_DSTR_OBJGT_CRYPT)
110#define ROAR_VIO_DSTR_OBJT_SSLTLS         ROAR_VIO_DSTR_OBJT_TLS
111
112#define ROAR_VIO_DSTR_OBJT_MAGIC          (0x01|ROAR_VIO_DSTR_OBJGT_SPECAL)
113#define ROAR_VIO_DSTR_OBJT_TANTALOS       (0x02|ROAR_VIO_DSTR_OBJGT_SPECAL)
114
115
116struct roar_vio_defaults {
117 int type;
118
119 mode_t o_mode;
120 int    o_flags;
121
122 union {
123  char *   file;
124  int      fh;
125  struct {
126          int               domain;
127          int               type;
128          char            * host;
129          union {
130                 struct sockaddr     sa;
131#ifdef ROAR_HAVE_IPV4
132                 struct sockaddr_in  in;
133#endif
134#ifdef ROAR_HAVE_UNIX
135                 struct sockaddr_un  un;
136#endif
137#ifdef ROAR_HAVE_LIBDNET
138                 struct sockaddr_dn  dn;
139#endif
140#ifdef ROAR_HAVE_IPV6
141                 struct sockaddr_in6 in6;
142#endif
143#ifdef ROAR_HAVE_IPX
144                 struct sockaddr_ipx ipx;
145#endif
146                } sa;
147          socklen_t         len;
148         } socket;
149 } d;
150};
151
152#define ROAR_VIO_DSTR_MAX_OBJ_PER_CHAIN 16
153
154struct roar_vio_dstr_chain {
155 int    type;
156 char * opts;
157 char * dst;
158 int    need_vio;
159 struct roar_vio_defaults * def;
160 struct roar_vio_calls    * vio;
161 struct roar_vio_defaults   store_def;
162};
163
164int     roar_vio_dstr_get_type(char * str);
165char *  roar_vio_dstr_get_name(int type);
166
167int     roar_vio_dstr_init_defaults (struct roar_vio_defaults * def, int type, int o_flags, mode_t o_mode);
168int     roar_vio_dstr_init_defaults_c (struct roar_vio_defaults * def, int type, struct roar_vio_defaults * odef, int o_flags);
169
170int     roar_vio_open_default (struct roar_vio_calls * calls, struct roar_vio_defaults * def);
171
172int     roar_vio_open_dstr    (struct roar_vio_calls * calls, char * dstr, struct roar_vio_defaults * def, int dnum);
173int     roar_vio_open_dstr_vio(struct roar_vio_calls * calls, char * dstr, struct roar_vio_defaults * def, int dnum, struct roar_vio_calls * vio);
174
175int     roar_vio_dstr_parse_opts(struct roar_vio_dstr_chain * chain);
176int     roar_vio_dstr_set_defaults(struct roar_vio_dstr_chain * chain, int len, struct roar_vio_defaults * def, int dnum);
177int     roar_vio_dstr_build_chain(struct roar_vio_dstr_chain * chain, struct roar_vio_calls * calls, struct roar_vio_calls * vio);
178
179#endif
180
181//ll
Note: See TracBrowser for help on using the repository browser.