Add support for ICE/STUN/TURN in res_rtp_asterisk and chan_sip.
[asterisk/asterisk.git] / res / pjproject / pjlib / include / pj / ip_helper.h
1 /* $Id$ */
2 /* 
3  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
4  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
19  */
20 #ifndef __PJ_IP_ROUTE_H__
21 #define __PJ_IP_ROUTE_H__
22
23 /**
24  * @file ip_helper.h
25  * @brief IP helper API
26  */
27
28 #include <pj/sock.h>
29
30 PJ_BEGIN_DECL
31
32 /**
33  * @defgroup pj_ip_helper IP Interface and Routing Helper
34  * @ingroup PJ_IO
35  * @{
36  *
37  * This module provides functions to query local host's IP interface and 
38  * routing table.
39  */
40
41 /**
42  * This structure describes IP routing entry.
43  */
44 typedef union pj_ip_route_entry
45 {
46     /** IP routing entry for IP version 4 routing */
47     struct
48     {
49         pj_in_addr      if_addr;    /**< Local interface IP address.    */
50         pj_in_addr      dst_addr;   /**< Destination IP address.        */
51         pj_in_addr      mask;       /**< Destination mask.              */
52     } ipv4;
53 } pj_ip_route_entry;
54
55
56 /**
57  * Enumerate the local IP interfaces currently active in the host.
58  *
59  * @param af        Family of the address to be retrieved. Application
60  *                  may specify pj_AF_UNSPEC() to retrieve all addresses,
61  *                  or pj_AF_INET() or pj_AF_INET6() to retrieve interfaces
62  *                  with specific address family.
63  * @param count     On input, specify the number of entries. On output,
64  *                  it will be filled with the actual number of entries.
65  * @param ifs       Array of socket addresses, which address part will
66  *                  be filled with the interface address. The address
67  *                  family part will be initialized with the address
68  *                  family of the IP address.
69  *
70  * @return          PJ_SUCCESS on success, or the appropriate error code.
71  */
72 PJ_DECL(pj_status_t) pj_enum_ip_interface(int af,
73                                           unsigned *count,
74                                           pj_sockaddr ifs[]);
75
76
77 /**
78  * Enumerate the IP routing table for this host.
79  *
80  * @param count     On input, specify the number of routes entries. On output,
81  *                  it will be filled with the actual number of route entries.
82  * @param routes    Array of IP routing entries.
83  *
84  * @return          PJ_SUCCESS on success, or the appropriate error code.
85  */
86 PJ_DECL(pj_status_t) pj_enum_ip_route(unsigned *count,
87                                       pj_ip_route_entry routes[]);
88
89
90
91 /** @} */
92
93 PJ_END_DECL
94
95
96 #endif  /* __PJ_IP_ROUTE_H__ */
97