author | Tero Marttila <terom@fixme.fi> |
Fri, 29 Aug 2008 23:31:17 +0300 | |
changeset 48 | 1c67f512779b |
parent 26 | 6d615203d963 |
permissions | -rw-r--r-- |
26
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
#ifndef CONFIG_H |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
#define CONFIG_H |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
#include <sys/socket.h> |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
5 |
#include <sys/un.h> |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
6 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
7 |
#define ADDR_TEXT_LEN 128 |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
8 |
#define ADDR_TEXT_LEN_STR "128" |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
#define PORT_TEXT_LEN 32 |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
10 |
#define PORT_TEXT_LEN_STR "32" |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
11 |
#define PATH_TEXT_LEN 108 /* from sys/un.h */ |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
12 |
#define PATH_TEXT_LEN_STR "108" /* from sys/un.h */ |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
struct config_endpoint { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
15 |
// one of AF_LOCAL, AF_INET, AF_INET6 |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
16 |
int family; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
18 |
// buffers to store the extracted textual addres/port into |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
19 |
// these /should/ be long enough |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
union { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
// PF_INET - may be a numeric IPv4 address, numeric IPv6 address, or hostname |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
struct { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
const char *addr; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
const char *port; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
25 |
} inet; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
// PF_LOCAL |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
struct { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
const char *path; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
} local; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
} af; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
struct { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
char addr[ADDR_TEXT_LEN]; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
char port[PORT_TEXT_LEN]; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
char default_port[PORT_TEXT_LEN]; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
char path[PATH_TEXT_LEN]; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
} _data; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
}; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
41 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
42 |
void endpoint_init (struct config_endpoint *endpoint, unsigned short default_port); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
43 |
int endpoint_parse (struct config_endpoint *endpoint, const char *addr_spec); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
44 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
45 |
/* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
46 |
* Parse a host:port string. |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
47 |
* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
48 |
* Valid formats: |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
49 |
* host |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
50 |
* host:port |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
51 |
* [host] |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
52 |
* [host]:port |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
53 |
* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
54 |
* The contents of the given hostport string *will* be modified. |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
55 |
* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
56 |
* The value of *port will be set to NULL if no port was given. |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
57 |
* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
58 |
* Returns 0 and sets *host if succesfull, nonzero otherwise. |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
59 |
* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
60 |
*/ |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
61 |
int parse_hostport (char *hostport, char **host, char **port); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
62 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
63 |
#endif /* CONFIG_H */ |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
64 |