Skip to content
Snippets Groups Projects
Commit 616189c6 authored by Luigi Rizzo's avatar Luigi Rizzo
Browse files

wrapper for all generic network headers that have different names

and locations on the various systems.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent f9ae0522
Branches
Tags
No related merge requests found
/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 2007, Digium, Inc.
*
* Luigi Rizzo
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*! \file
* \brief Wrapper for network related headers,
* masking differences between various operating systems.
*/
#ifndef _ASTERISK_NETWORK_H
#define _ASTERISK_NETWORK_H
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
#ifdef HAVE_WINSOCK2_H_NOT
#include <winsock2.h>
#include <ws2tcpip.h>
#elif defined(HAVE_WINSOCK_H)
#include <winsock.h>
typedef int socklen_t;
#else
#include <arpa/inet.h> /* include early to override inet_ntoa */
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netdb.h>
#include <sys/socket.h>
#endif
#ifndef HAVE_INET_ATON
int inet_aton(const char *cp, struct in_addr *pin);
#endif
#ifndef IFNAMSIZ
#define IFNAMSIZ 16
#endif
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 256
#endif
/*!
* \brief thread-safe replacement for inet_ntoa().
*
* \note It is very important to note that even though this is a thread-safe
* replacement for inet_ntoa(), it is *not* reentrant. In a single
* thread, the result from a previous call to this function is no longer
* valid once it is called again. If the result from multiple calls to
* this function need to be kept or used at once, then the result must be
* copied to a local buffer before calling this function again.
*/
const char *ast_inet_ntoa(struct in_addr ia);
#ifdef inet_ntoa
#undef inet_ntoa
#endif
#define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__
/*! \brief Compares the source address and port of two sockaddr_in */
static force_inline int inaddrcmp(const struct sockaddr_in *sin1, const struct sockaddr_in *sin2)
{
return ((sin1->sin_addr.s_addr != sin2->sin_addr.s_addr)
|| (sin1->sin_port != sin2->sin_port));
}
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
#endif /* _ASTERISK_NETWORK_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment