author | Tero Marttila <terom@fixme.fi> |
Thu, 28 Aug 2008 03:14:07 +0300 | |
changeset 47 | a5c09677ca6f |
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 |
#include <stdio.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 |
#include <ctype.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 "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
|
5 |
#include "common.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 |
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
|
8 |
// snprintf the default port as a string |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
snprintf(endpoint->_data.default_port, PORT_TEXT_LEN, "%hu", 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
|
10 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
11 |
// set up defaults |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
12 |
endpoint->family = PF_INET; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
endpoint->af.inet.addr = NULL; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
endpoint->af.inet.port = endpoint->_data.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
|
15 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
16 |
|
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 |
* Parse an endpoint address in human-readable format into the given endpoint. You can then use the socket_* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
19 |
* functions to work with endpoints and sockets. |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
* |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
* Formats supported: |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
* =foo.sock, =/quux/bar.sock |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
* hostname, 12.34.56.78, [::1] |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
* hostname:port, 12.34.56.78:port, [::1]: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 |
*/ |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
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
|
27 |
// for empty addr specs, just return |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
if (!addr_spec || *addr_spec == '\0') |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
return 1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
if (sscanf(addr_spec, "=%" PATH_TEXT_LEN_STR "s", endpoint->_data.path) == 1) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
// local unix socket |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
endpoint->family = 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
|
34 |
endpoint->af.local.path = endpoint->_data.path; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
} else if ( |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
sscanf(addr_spec, "[%" ADDR_TEXT_LEN_STR "[^]] ]:%" PORT_TEXT_LEN_STR "s", endpoint->_data.addr, endpoint->_data.port) == 2 |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
|| sscanf(addr_spec, "%" ADDR_TEXT_LEN_STR "[^:] :%" PORT_TEXT_LEN_STR "s", endpoint->_data.addr, endpoint->_data.port) == 2 |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
endpoint->family = PF_INET; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
41 |
endpoint->af.inet.addr = endpoint->_data.addr; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
42 |
endpoint->af.inet.port = endpoint->_data.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 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
44 |
} else if ( |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
45 |
sscanf(addr_spec, "[%" ADDR_TEXT_LEN_STR "[^]] ]", endpoint->_data.addr) == 1 |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
46 |
|| sscanf(addr_spec, "%" ADDR_TEXT_LEN_STR "[^:]", endpoint->_data.addr) == 1 |
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 |
endpoint->family = PF_INET; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
49 |
endpoint->af.inet.addr = endpoint->_data.addr; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
50 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
51 |
} else { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
52 |
// unknown foramt |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
53 |
ERROR("unkown address format: %s", 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
|
54 |
} |
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 |
return 0; |
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 |
error: |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
59 |
return -1; |
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 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
62 |
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
|
63 |
char *c; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
64 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
65 |
int brace = 0, colon = 0; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
66 |
*host = *port = NULL; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
67 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
68 |
for (c = hostport; *c != '\0'; c++) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
69 |
if (isspace(*c)) |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
70 |
continue; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
71 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
72 |
switch (*c) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
73 |
case '[': |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
74 |
if (c > hostport) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
75 |
error("parse_hostport: %c must be first char, if any: %s", *c, hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
76 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
77 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
78 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
79 |
brace = *c; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
80 |
break; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
81 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
82 |
case ']': |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
83 |
if (!brace) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
84 |
error("parse_hostport: %c without matching brace: %s", *c, hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
85 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
86 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
87 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
88 |
if (!*host) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
89 |
error("parse_hostport: empty hostname: %s", hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
90 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
91 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
92 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
93 |
brace = 0; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
94 |
break; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
95 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
96 |
case ':': |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
97 |
if (brace) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
98 |
// colons inside braces are left as-is |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
99 |
continue; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
100 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
101 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
102 |
if (!*host) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
103 |
error("parse_hostport: colon before hostname: %s", hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
104 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
105 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
106 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
107 |
if (*port) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
108 |
error("parse_hostport: colon after port: %s", hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
109 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
110 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
111 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
112 |
if (colon) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
113 |
error("parse_hostport: too many colons: %s", hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
114 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
115 |
}; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
116 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
117 |
// finished parsing the host part, move on to the port part |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
118 |
colon = ':'; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
119 |
*c = '\0'; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
120 |
break; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
121 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
122 |
default: |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
123 |
if (!*host) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
124 |
// first char of the host |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
125 |
*host = c; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
126 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
127 |
} else if (colon && !*port) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
128 |
// first char of the port |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
129 |
*port = c; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
130 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
131 |
} // else a part of either, don't care about it |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
132 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
133 |
break; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
134 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
135 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
136 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
137 |
if (!*host) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
138 |
error("parse_hostport: missing hostname: %s", hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
139 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
140 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
141 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
142 |
if (brace) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
143 |
error("parse_hostport: missing close-brace for %c: %s", brace, hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
144 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
145 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
146 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
147 |
if (colon && !*port) { |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
148 |
error("parse_hostport: missing port: %s", hostport); |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
149 |
return -1; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
150 |
} |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
151 |
|
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
152 |
return 0; |
6d615203d963
support for PF_LOCAL, it works, but needs some more testing/cleanup old code
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
153 |
} |