1 /*
2 NETWIB
3 Network library
4 Copyright(c) 1999-2010 Laurent Constantin
5 -----
6
7 Main server : http://www.laurentconstantin.com/
8 Backup server : http://laurentconstantin.free.fr/
9 [my current email address is on the web servers]
10
11 -----
12 This file is part of Netwib.
13
14 Netwib is free software: you can redistribute it and/or modify
15 it under the terms of the GNU General Public License version 3
16 as published by the Free Software Foundation.
17
18 Netwib is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details (http://www.gnu.org/).
22
23 ------------------------------------------------------------------------
24 */
25
26 #include <netwib/inc/maininc.h>
27
28 /*-------------------------------------------------------------*/
netwib_internal_version(netwib_uint32 * pversionmajor,netwib_uint32 * pversionminor,netwib_uint32 * pversionmicro)29 netwib_err netwib_internal_version(netwib_uint32 *pversionmajor,
30 netwib_uint32 *pversionminor,
31 netwib_uint32 *pversionmicro)
32 {
33
34 if (pversionmajor != NULL) *pversionmajor = NETWIBDEF_VERSIONMAJOR;
35 if (pversionminor != NULL) *pversionminor = NETWIBDEF_VERSIONMINOR;
36 if (pversionmicro != NULL) *pversionmicro = NETWIBDEF_VERSIONMICRO;
37
38 return(NETWIB_ERR_OK);
39 }
40
41 /*-------------------------------------------------------------*/
netwib_buf_append_internal2(netwib_buf * poutbuf)42 static netwib_err netwib_buf_append_internal2(netwib_buf *poutbuf)
43 {
44
45 #define netwib_co_s(n,st) netwib_er(netwib_buf_append_fmt(poutbuf, "%s=\"%s\"\n", n, st));
46 #define netwib_co_i(n,i) netwib_er(netwib_buf_append_fmt(poutbuf, "%s=%{uint32}\n", n, i));
47
48 netwib_co_s("NETWIBDEF_SYSNAME",
49 NETWIBDEF_SYSNAME);
50 netwib_co_s("NETWIBDEF_SYSARCH",
51 NETWIBDEF_SYSARCH);
52 netwib_co_i("NETWIBDEF_ARCH_ENDIAN",
53 NETWIBDEF_ARCH_ENDIAN);
54 netwib_co_i("NETWIBDEF_ARCH_BITS",
55 NETWIBDEF_ARCH_BITS);
56 netwib_co_i("NETWIBDEF_ARCH_ALIGN",
57 NETWIBDEF_ARCH_ALIGN);
58 netwib_co_s("NETWIBDEF_VERSION",
59 NETWIBDEF_VERSION);
60 netwib_co_i("NETWIBDEF_VERSIONMAJOR",
61 NETWIBDEF_VERSIONMAJOR);
62 netwib_co_i("NETWIBDEF_VERSIONMINOR",
63 NETWIBDEF_VERSIONMINOR);
64 netwib_co_i("NETWIBDEF_VERSIONMICRO",
65 NETWIBDEF_VERSIONMICRO);
66 netwib_co_i("NETWIBDEF_LIBPTHREADINSTALLED",
67 NETWIBDEF_LIBPTHREADINSTALLED);
68 netwib_co_i("NETWIBDEF_LIBPTHREADFROMDCE",
69 NETWIBDEF_LIBPTHREADFROMDCE);
70 netwib_co_i("NETWIBDEF_LIBPTHREADFROMMIT",
71 NETWIBDEF_LIBPTHREADFROMMIT);
72 netwib_co_i("NETWIBDEF_LIBPCAPINSTALLED",
73 NETWIBDEF_LIBPCAPINSTALLED);
74 netwib_co_i("NETWIBDEF_LIBPCAPFROMREDHAT",
75 NETWIBDEF_LIBPCAPFROMREDHAT);
76 netwib_co_i("NETWIBDEF_LIBNETINSTALLED",
77 NETWIBDEF_LIBNETINSTALLED);
78 netwib_co_i("NETWIBDEF_LIBNETVERSION11",
79 NETWIBDEF_LIBNETVERSION11);
80 netwib_co_i("NETWIBDEF_LIBUTILINSTALLED",
81 NETWIBDEF_LIBUTILINSTALLED);
82 netwib_co_s("NETWIBDEF_PROGCC",
83 NETWIBDEF_PROGCC);
84 netwib_co_i("NETWIBDEF_PROGCCALIAS",
85 NETWIBDEF_PROGCCALIAS);
86 netwib_co_i("NETWIBDEF_PROGCCWUNDEF",
87 NETWIBDEF_PROGCCWUNDEF);
88 netwib_co_i("NETWIBDEF_PROGCCWSIGNC",
89 NETWIBDEF_PROGCCWSIGNC);
90 netwib_co_i("NETWIBDEF_PROGCCWEXTRA",
91 NETWIBDEF_PROGCCWEXTRA);
92 netwib_co_s("NETWIBDEF_PROGAR",
93 NETWIBDEF_PROGAR);
94 netwib_co_s("NETWIBDEF_PROGRANLIB",
95 NETWIBDEF_PROGRANLIB);
96 netwib_co_s("NETWIBDEF_PROGGREP",
97 NETWIBDEF_PROGGREP);
98 netwib_co_s("NETWIBDEF_INSTPREFIX",
99 NETWIBDEF_INSTPREFIX);
100 netwib_co_s("NETWIBDEF_INSTINCLUDE",
101 NETWIBDEF_INSTINCLUDE);
102 netwib_co_s("NETWIBDEF_INSTLIB",
103 NETWIBDEF_INSTLIB);
104 netwib_co_s("NETWIBDEF_INSTBIN",
105 NETWIBDEF_INSTBIN);
106 netwib_co_s("NETWIBDEF_INSTMAN",
107 NETWIBDEF_INSTMAN);
108 netwib_co_s("NETWIBDEF_INSTMAN3",
109 NETWIBDEF_INSTMAN3);
110 netwib_co_i("NETWIBDEF_SUPPORT_SNIFF",
111 NETWIBDEF_SUPPORT_SNIFF);
112 netwib_co_i("NETWIBDEF_SUPPORT_SPOOF",
113 NETWIBDEF_SUPPORT_SPOOF);
114 netwib_co_i("NETWIBDEF_SUPPORT_ENCODETYPE_PCAP",
115 NETWIBDEF_SUPPORT_ENCODETYPE_PCAP);
116 netwib_co_i("NETWIBDEF_HAVEINCL_PTHREAD",
117 NETWIBDEF_HAVEINCL_PTHREAD);
118 netwib_co_i("NETWIBDEF_HAVEINCL_STROPTS",
119 NETWIBDEF_HAVEINCL_STROPTS);
120 netwib_co_i("NETWIBDEF_HAVEINCL_SCHED",
121 NETWIBDEF_HAVEINCL_SCHED);
122 netwib_co_i("NETWIBDEF_HAVEINCL_PTY",
123 NETWIBDEF_HAVEINCL_PTY);
124 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_POLL",
125 NETWIBDEF_HAVEINCL_SYS_POLL);
126 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_PARAM",
127 NETWIBDEF_HAVEINCL_SYS_PARAM);
128 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_SYSCTL",
129 NETWIBDEF_HAVEINCL_SYS_SYSCTL);
130 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_IOCTL",
131 NETWIBDEF_HAVEINCL_SYS_IOCTL);
132 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_SOCKIO",
133 NETWIBDEF_HAVEINCL_SYS_SOCKIO);
134 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_DLPI",
135 NETWIBDEF_HAVEINCL_SYS_DLPI);
136 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_BUFMOD",
137 NETWIBDEF_HAVEINCL_SYS_BUFMOD);
138 netwib_co_i("NETWIBDEF_HAVEINCL_SYS_MMAN",
139 NETWIBDEF_HAVEINCL_SYS_MMAN);
140 netwib_co_i("NETWIBDEF_HAVEINCL_NET_ETHERNET",
141 NETWIBDEF_HAVEINCL_NET_ETHERNET);
142 netwib_co_i("NETWIBDEF_HAVEINCL_NET_IF_ARP",
143 NETWIBDEF_HAVEINCL_NET_IF_ARP);
144 netwib_co_i("NETWIBDEF_HAVEINCL_NET_IF_TYPES",
145 NETWIBDEF_HAVEINCL_NET_IF_TYPES);
146 netwib_co_i("NETWIBDEF_HAVEINCL_NET_IF_DL",
147 NETWIBDEF_HAVEINCL_NET_IF_DL);
148 netwib_co_i("NETWIBDEF_HAVEINCL_NET_BPF",
149 NETWIBDEF_HAVEINCL_NET_BPF);
150 netwib_co_i("NETWIBDEF_HAVEINCL_NETINET_IF_ETHER",
151 NETWIBDEF_HAVEINCL_NETINET_IF_ETHER);
152 netwib_co_i("NETWIBDEF_HAVEINCL_NETINET_ETHER",
153 NETWIBDEF_HAVEINCL_NETINET_ETHER);
154 netwib_co_i("NETWIBDEF_HAVEINCL_NETPACKET_PACKET",
155 NETWIBDEF_HAVEINCL_NETPACKET_PACKET);
156 netwib_co_i("NETWIBDEF_HAVEINCL_ASM_PAGE",
157 NETWIBDEF_HAVEINCL_ASM_PAGE);
158 netwib_co_i("NETWIBDEF_HAVEINCL_MACH_MACHINE_VMPARAM",
159 NETWIBDEF_HAVEINCL_MACH_MACHINE_VMPARAM);
160 netwib_co_i("NETWIBDEF_HAVEINCL_MACHINE_PARAM",
161 NETWIBDEF_HAVEINCL_MACHINE_PARAM);
162 netwib_co_i("NETWIBDEF_HAVETYPE_SIZE_T",
163 NETWIBDEF_HAVETYPE_SIZE_T);
164 netwib_co_i("NETWIBDEF_HAVETYPE_SOCKLEN_T",
165 NETWIBDEF_HAVETYPE_SOCKLEN_T);
166 netwib_co_i("NETWIBDEF_HAVETYPE_SIGHANDLER_T",
167 NETWIBDEF_HAVETYPE_SIGHANDLER_T);
168 netwib_co_i("NETWIBDEF_HAVETYPE_SIG_T",
169 NETWIBDEF_HAVETYPE_SIG_T);
170 netwib_co_i("NETWIBDEF_HAVETYPE_OFF_T",
171 NETWIBDEF_HAVETYPE_OFF_T);
172 netwib_co_i("NETWIBDEF_HAVETYPE_PTHREAD_RWLOCK_T",
173 NETWIBDEF_HAVETYPE_PTHREAD_RWLOCK_T);
174 netwib_co_i("NETWIBDEF_HAVETYPE_SOCKADDR_IN6",
175 NETWIBDEF_HAVETYPE_SOCKADDR_IN6);
176 netwib_co_i("NETWIBDEF_HAVEFIELD_TM_GMTOFF",
177 NETWIBDEF_HAVEFIELD_TM_GMTOFF);
178 netwib_co_i("NETWIBDEF_HAVEFIELD_SOCKADDR_SALEN",
179 NETWIBDEF_HAVEFIELD_SOCKADDR_SALEN);
180 netwib_co_i("NETWIBDEF_HAVEFIELD_SOCKADDRIN_SINLEN",
181 NETWIBDEF_HAVEFIELD_SOCKADDRIN_SINLEN);
182 netwib_co_i("NETWIBDEF_HAVEFIELD_SOCKADDRIN6_SIN6LEN",
183 NETWIBDEF_HAVEFIELD_SOCKADDRIN6_SIN6LEN);
184 netwib_co_i("NETWIBDEF_HAVEFUNC_ETHER_NTOHOST",
185 NETWIBDEF_HAVEFUNC_ETHER_NTOHOST);
186 netwib_co_i("NETWIBDEF_HAVEFUNC_ETHER_HOSTTON",
187 NETWIBDEF_HAVEFUNC_ETHER_HOSTTON);
188 netwib_co_i("NETWIBDEF_HAVEFUNC_HSTRERROR",
189 NETWIBDEF_HAVEFUNC_HSTRERROR);
190 netwib_co_i("NETWIBDEF_HAVEFUNC_SNPRINTF",
191 NETWIBDEF_HAVEFUNC_SNPRINTF);
192 netwib_co_i("NETWIBDEF_HAVEFUNC_PCAP_FREECODE",
193 NETWIBDEF_HAVEFUNC_PCAP_FREECODE);
194 netwib_co_i("NETWIBDEF_HAVEFUNC_PCAP_FREECODE2",
195 NETWIBDEF_HAVEFUNC_PCAP_FREECODE2);
196 netwib_co_i("NETWIBDEF_HAVEFUNC_PCAP_OPENDEAD",
197 NETWIBDEF_HAVEFUNC_PCAP_OPENDEAD);
198 netwib_co_i("NETWIBDEF_HAVEFUNC_POLL",
199 NETWIBDEF_HAVEFUNC_POLL);
200 netwib_co_i("NETWIBDEF_HAVEFUNC_DIRFD",
201 NETWIBDEF_HAVEFUNC_DIRFD);
202 netwib_co_i("NETWIBDEF_HAVEFUNC_FPATHCONF",
203 NETWIBDEF_HAVEFUNC_FPATHCONF);
204 netwib_co_i("NETWIBDEF_HAVEFUNC_PATHCONF",
205 NETWIBDEF_HAVEFUNC_PATHCONF);
206 netwib_co_i("NETWIBDEF_HAVEFUNC_SYSCONF",
207 NETWIBDEF_HAVEFUNC_SYSCONF);
208 netwib_co_i("NETWIBDEF_HAVEFUNC_GETPAGESIZE",
209 NETWIBDEF_HAVEFUNC_GETPAGESIZE);
210 netwib_co_i("NETWIBDEF_HAVEFUNC_GETRLIMIT",
211 NETWIBDEF_HAVEFUNC_GETRLIMIT);
212 netwib_co_i("NETWIBDEF_HAVEFUNC_NANOSLEEP",
213 NETWIBDEF_HAVEFUNC_NANOSLEEP);
214 netwib_co_i("NETWIBDEF_HAVEFUNC_USLEEP",
215 NETWIBDEF_HAVEFUNC_USLEEP);
216 netwib_co_i("NETWIBDEF_HAVEFUNC_GETTIMEOFDAY",
217 NETWIBDEF_HAVEFUNC_GETTIMEOFDAY);
218 netwib_co_i("NETWIBDEF_HAVEFUNC_CLOCK_GETTIME",
219 NETWIBDEF_HAVEFUNC_CLOCK_GETTIME);
220 netwib_co_i("NETWIBDEF_HAVEFUNC_PTHREAD_DELAY_NP",
221 NETWIBDEF_HAVEFUNC_PTHREAD_DELAY_NP);
222 netwib_co_i("NETWIBDEF_HAVEFUNC_PTHREAD_MUTEX_TIMEDLOCK",
223 NETWIBDEF_HAVEFUNC_PTHREAD_MUTEX_TIMEDLOCK);
224 netwib_co_i("NETWIBDEF_HAVEFUNC_PTHREAD_RWLOCK_TIMEDRDLOCK",
225 NETWIBDEF_HAVEFUNC_PTHREAD_RWLOCK_TIMEDRDLOCK);
226 netwib_co_i("NETWIBDEF_HAVEFUNC_PTHREAD_RWLOCK_TIMEDWRLOCK",
227 NETWIBDEF_HAVEFUNC_PTHREAD_RWLOCK_TIMEDWRLOCK);
228 netwib_co_i("NETWIBDEF_HAVEFUNC_PTHREAD_YIELD",
229 NETWIBDEF_HAVEFUNC_PTHREAD_YIELD);
230 netwib_co_i("NETWIBDEF_HAVEFUNC_SCHED_YIELD",
231 NETWIBDEF_HAVEFUNC_SCHED_YIELD);
232 netwib_co_i("NETWIBDEF_HAVEFUNC_GETPWNAM_R",
233 NETWIBDEF_HAVEFUNC_GETPWNAM_R);
234 netwib_co_i("NETWIBDEF_HAVEFUNC_GETGRNAM_R",
235 NETWIBDEF_HAVEFUNC_GETGRNAM_R);
236 netwib_co_i("NETWIBDEF_HAVEFUNC_GETGRGID_R",
237 NETWIBDEF_HAVEFUNC_GETGRGID_R);
238 netwib_co_i("NETWIBDEF_HAVEFUNC_READDIR_R",
239 NETWIBDEF_HAVEFUNC_READDIR_R);
240 netwib_co_i("NETWIBDEF_HAVEFUNC_GETHOSTBYNAME_R",
241 NETWIBDEF_HAVEFUNC_GETHOSTBYNAME_R);
242 netwib_co_i("NETWIBDEF_HAVEFUNC_GETHOSTBYADDR_R",
243 NETWIBDEF_HAVEFUNC_GETHOSTBYADDR_R);
244 netwib_co_i("NETWIBDEF_HAVEFUNC_GETNAMEINFO",
245 NETWIBDEF_HAVEFUNC_GETNAMEINFO);
246 netwib_co_i("NETWIBDEF_HAVEFUNC_GETADDRINFO",
247 NETWIBDEF_HAVEFUNC_GETADDRINFO);
248 netwib_co_i("NETWIBDEF_HAVEFUNC_GETIPNODEBYNAME",
249 NETWIBDEF_HAVEFUNC_GETIPNODEBYNAME);
250 netwib_co_i("NETWIBDEF_HAVEFUNC_GETIPNODEBYADDR",
251 NETWIBDEF_HAVEFUNC_GETIPNODEBYADDR);
252 netwib_co_i("NETWIBDEF_HAVEFUNC_LOCALTIME_R",
253 NETWIBDEF_HAVEFUNC_LOCALTIME_R);
254 netwib_co_i("NETWIBDEF_HAVEVAR_HERRNO",
255 NETWIBDEF_HAVEVAR_HERRNO);
256 netwib_co_i("NETWIBDEF_HAVEVAR_PATH_MAX",
257 NETWIBDEF_HAVEVAR_PATH_MAX);
258 netwib_co_i("NETWIBDEF_HAVEVAR_NAME_MAX",
259 NETWIBDEF_HAVEVAR_NAME_MAX);
260 netwib_co_i("NETWIBDEF_HAVEVAR_PAGE_SIZE",
261 NETWIBDEF_HAVEVAR_PAGE_SIZE);
262 netwib_co_i("NETWIBDEF_HAVEVAR_PAGESIZE",
263 NETWIBDEF_HAVEVAR_PAGESIZE);
264 netwib_co_i("NETWIBDEF_HAVEVAR_BIOCSHDRCMPLT",
265 NETWIBDEF_HAVEVAR_BIOCSHDRCMPLT);
266 netwib_co_i("NETWIBDEF_HAVEVAR_SIOCGLIFCONF",
267 NETWIBDEF_HAVEVAR_SIOCGLIFCONF);
268 netwib_co_i("NETWIBDEF_HAVEVAR_AF_INET6",
269 NETWIBDEF_HAVEVAR_AF_INET6);
270 netwib_co_i("NETWIBDEF_HAVEVAR_SC_GETPW_R_SIZE_MAX",
271 NETWIBDEF_HAVEVAR_SC_GETPW_R_SIZE_MAX);
272 netwib_co_i("NETWIBDEF_HAVEVAR_SC_GETGR_R_SIZE_MAX",
273 NETWIBDEF_HAVEVAR_SC_GETGR_R_SIZE_MAX);
274
275 return(NETWIB_ERR_OK);
276 }
277
278 /*-------------------------------------------------------------*/
netwib_buf_append_internal(netwib_buf * pbuf)279 netwib_err netwib_buf_append_internal(netwib_buf *pbuf)
280 {
281 netwib_uint32 savedsize;
282 netwib_err ret;
283
284 if (pbuf == NULL) {
285 return(NETWIB_ERR_OK);
286 }
287
288 /* save position in case of error */
289 savedsize = netwib__buf_ref_data_size(pbuf);
290
291 ret = netwib_buf_append_internal2(pbuf);
292
293 /* on error, restore first pos */
294 if (ret != NETWIB_ERR_OK) {
295 pbuf->endoffset = pbuf->beginoffset + savedsize;
296 }
297 return(ret);
298 }
299
300 /*-------------------------------------------------------------*/
netwib_internal_display(void)301 netwib_err netwib_internal_display(void)
302 {
303 netwib_buf buf;
304 netwib_string pc;
305
306 netwib_er(netwib_buf_init_mallocdefault(&buf));
307 netwib_er(netwib_buf_append_internal2(&buf));
308 netwib_er(netwib_buf_ref_string(&buf, &pc));
309 printf("%s", pc);
310 fflush(stdout);
311 netwib_er(netwib_buf_close(&buf));
312
313 return(NETWIB_ERR_OK);
314 }
315