blob: f8266cd8a59c30dce8a44b34061210faaef95fce [file] [log] [blame]
Alexandre Lision8af73cb2013-12-10 14:11:20 -05001/* $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
30PJ_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 */
44typedef 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 */
72PJ_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 */
86PJ_DECL(pj_status_t) pj_enum_ip_route(unsigned *count,
87 pj_ip_route_entry routes[]);
88
89
90
91/** @} */
92
93PJ_END_DECL
94
95
96#endif /* __PJ_IP_ROUTE_H__ */
97