mirror of
https://repo.or.cz/socat.git
synced 2025-07-14 07:23:23 +00:00
merged features ancillary, envvar
This commit is contained in:
parent
bd3810642b
commit
2ffe5a324e
42 changed files with 1898 additions and 287 deletions
39
xio-ip4.c
39
xio-ip4.c
|
@ -1,5 +1,5 @@
|
|||
/* source: xio-ip4.c */
|
||||
/* Copyright Gerhard Rieger 2001-2007 */
|
||||
/* Copyright Gerhard Rieger 2001-2008 */
|
||||
/* Published under the GNU General Public License V.2, see file COPYING */
|
||||
|
||||
/* this file contains the source for IP4 related functions */
|
||||
|
@ -43,4 +43,41 @@ int xiocheckrange_ip4(struct sockaddr_in *pa, struct xiorange_ip4 *range) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* returns information that can be used for constructing an environment
|
||||
variable describing the socket address.
|
||||
if idx is 0, this function writes "ADDR" into namebuff and the IP address
|
||||
into valuebuff, and returns 1 (which means that one more info is there).
|
||||
if idx is 1, it writes "PORT" into namebuff and the port number into
|
||||
valuebuff, and returns 0 (no more info)
|
||||
namelen and valuelen contain the max. allowed length of output chars in the
|
||||
respective buffer.
|
||||
on error this function returns -1.
|
||||
*/
|
||||
int
|
||||
xiosetsockaddrenv_ip4(int idx, char *namebuff, size_t namelen,
|
||||
char *valuebuff, size_t valuelen,
|
||||
struct sockaddr_in *sa, int ipproto) {
|
||||
switch (idx) {
|
||||
case 0:
|
||||
strcpy(namebuff, "ADDR");
|
||||
strcpy(valuebuff,
|
||||
inet4addr_info(ntohl(sa->sin_addr.s_addr), valuebuff, valuelen));
|
||||
switch (ipproto) {
|
||||
case IPPROTO_TCP:
|
||||
case IPPROTO_UDP:
|
||||
#ifdef IPPROTO_SCTP
|
||||
case IPPROTO_SCTP:
|
||||
#endif
|
||||
return 1; /* there is port information to also be retrieved */
|
||||
default:
|
||||
return 0; /* no port info coming */
|
||||
}
|
||||
case 1:
|
||||
strcpy(namebuff, "PORT");
|
||||
snprintf(valuebuff, valuelen, "%u", ntohs(sa->sin_port));
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif /* WITH_IP4 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue