xref: /openbsd/usr.sbin/npppd/npppd/npppd.h (revision 0fbf3537)
1*0fbf3537Syasuoka /*-
2*0fbf3537Syasuoka  * Copyright (c) 2009 Internet Initiative Japan Inc.
3*0fbf3537Syasuoka  * All rights reserved.
4*0fbf3537Syasuoka  *
5*0fbf3537Syasuoka  * Redistribution and use in source and binary forms, with or without
6*0fbf3537Syasuoka  * modification, are permitted provided that the following conditions
7*0fbf3537Syasuoka  * are met:
8*0fbf3537Syasuoka  * 1. Redistributions of source code must retain the above copyright
9*0fbf3537Syasuoka  *    notice, this list of conditions and the following disclaimer.
10*0fbf3537Syasuoka  * 2. Redistributions in binary form must reproduce the above copyright
11*0fbf3537Syasuoka  *    notice, this list of conditions and the following disclaimer in the
12*0fbf3537Syasuoka  *    documentation and/or other materials provided with the distribution.
13*0fbf3537Syasuoka  *
14*0fbf3537Syasuoka  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*0fbf3537Syasuoka  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*0fbf3537Syasuoka  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*0fbf3537Syasuoka  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*0fbf3537Syasuoka  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*0fbf3537Syasuoka  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*0fbf3537Syasuoka  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*0fbf3537Syasuoka  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*0fbf3537Syasuoka  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*0fbf3537Syasuoka  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*0fbf3537Syasuoka  * SUCH DAMAGE.
25*0fbf3537Syasuoka  */
26*0fbf3537Syasuoka #ifndef	NPPPD_H
27*0fbf3537Syasuoka #define	NPPPD_H 1
28*0fbf3537Syasuoka 
29*0fbf3537Syasuoka 
30*0fbf3537Syasuoka #ifndef	NPPPD_DEFAULT_TUN_IFNAME
31*0fbf3537Syasuoka #define	NPPPD_DEFAULT_TUN_IFNAME	"tun0"
32*0fbf3537Syasuoka #endif
33*0fbf3537Syasuoka 
34*0fbf3537Syasuoka 
35*0fbf3537Syasuoka #define	DEFAULT_RADIUS_AUTH_IPADDR	"127.0.0.1"
36*0fbf3537Syasuoka #define	DEFAULT_RADIUS_AUTH_PORT	1812
37*0fbf3537Syasuoka #define	DEFAULT_RADIUS_AUTH_TIMEOUT	9
38*0fbf3537Syasuoka 
39*0fbf3537Syasuoka #define	DEFAULT_AUTH_TIMEOUT		30
40*0fbf3537Syasuoka 
41*0fbf3537Syasuoka /** ���������� */
42*0fbf3537Syasuoka #define NPPPD_IP_ASSIGN_FIXED		0x0001
43*0fbf3537Syasuoka 
44*0fbf3537Syasuoka /** ��������Ƥ������ɥ쥹���������� */
45*0fbf3537Syasuoka #define NPPPD_IP_ASSIGN_USER_SELECT	0x0002
46*0fbf3537Syasuoka 
47*0fbf3537Syasuoka /** RADIUS �� Framed-IP-Address ��Ȥ� */
48*0fbf3537Syasuoka #define NPPPD_IP_ASSIGN_RADIUS		0x0004
49*0fbf3537Syasuoka 
50*0fbf3537Syasuoka /** sockaddr_npppd */
51*0fbf3537Syasuoka struct sockaddr_npppd {
52*0fbf3537Syasuoka 	struct sockaddr_in sin4;
53*0fbf3537Syasuoka 	struct sockaddr_in sin4mask;
54*0fbf3537Syasuoka #define			snp_len		sin4.sin_len
55*0fbf3537Syasuoka #define			snp_family	sin4.sin_family
56*0fbf3537Syasuoka #define			snp_addr	sin4.sin_addr
57*0fbf3537Syasuoka 	int		snp_type;	/* SNP_POOL or SNP_PPP */
58*0fbf3537Syasuoka #define			snp_mask	sin4mask.sin_addr
59*0fbf3537Syasuoka 	/** ���Υ���ȥ� */
60*0fbf3537Syasuoka 	struct sockaddr_npppd *snp_next;
61*0fbf3537Syasuoka 	/** ����ȥ����� */
62*0fbf3537Syasuoka 	void 		*snp_data_ptr;
63*0fbf3537Syasuoka };
64*0fbf3537Syasuoka #define	SNP_POOL		1
65*0fbf3537Syasuoka #define	SNP_DYN_POOL		2
66*0fbf3537Syasuoka #define	SNP_PPP			3
67*0fbf3537Syasuoka 
68*0fbf3537Syasuoka typedef struct _npppd		npppd;
69*0fbf3537Syasuoka 
70*0fbf3537Syasuoka #include "ppp.h"
71*0fbf3537Syasuoka 
72*0fbf3537Syasuoka #ifdef __cplusplus
73*0fbf3537Syasuoka extern "C" {
74*0fbf3537Syasuoka #endif
75*0fbf3537Syasuoka 
76*0fbf3537Syasuoka 
77*0fbf3537Syasuoka npppd      *npppd_get_npppd (void);
78*0fbf3537Syasuoka int        npppd_init (npppd *, const char *);
79*0fbf3537Syasuoka void       npppd_stop (npppd *);
80*0fbf3537Syasuoka void       npppd_fini (npppd *);
81*0fbf3537Syasuoka int        npppd_prepare_ip (npppd *, npppd_ppp *);
82*0fbf3537Syasuoka void       npppd_release_ip (npppd *, npppd_ppp *);
83*0fbf3537Syasuoka int        nppp_load_user_setting(npppd *, npppd_ppp *);
84*0fbf3537Syasuoka void       npppd_set_ip_enabled (npppd *, npppd_ppp *, int);
85*0fbf3537Syasuoka int        npppd_get_user_password (npppd *, npppd_ppp *, const char *, char *, int *);
86*0fbf3537Syasuoka struct in_addr *npppd_get_user_framed_ip_address(npppd *, npppd_ppp *, const char *);
87*0fbf3537Syasuoka int        npppd_check_calling_number (npppd *, npppd_ppp *);
88*0fbf3537Syasuoka void       npppd_network_output (npppd *, npppd_ppp *, int, u_char *, int);
89*0fbf3537Syasuoka void       npppd_network_input (npppd *, uint8_t *, int);
90*0fbf3537Syasuoka npppd_ppp  *npppd_get_ppp_by_ip (npppd *, struct in_addr);
91*0fbf3537Syasuoka slist      *npppd_get_ppp_by_user (npppd *, const char *);
92*0fbf3537Syasuoka int        npppd_check_user_max_session(npppd *, npppd_ppp *);
93*0fbf3537Syasuoka int        npppd_get_all_users (npppd *, slist *);
94*0fbf3537Syasuoka int        npppd_set_radish (npppd *, void *);
95*0fbf3537Syasuoka int        npppd_ppp_iface_is_ready(npppd *, npppd_ppp *);
96*0fbf3537Syasuoka int        sockaddr_npppd_match(void *, void *);
97*0fbf3537Syasuoka npppd_ppp  *npppd_get_ppp_by_id(npppd *, int);
98*0fbf3537Syasuoka 
99*0fbf3537Syasuoka const char  *npppd_config_str (npppd *, const char *);
100*0fbf3537Syasuoka int         npppd_config_int (npppd *, const char *, int);
101*0fbf3537Syasuoka int         npppd_config_str_equal (npppd *, const char *, const char *, int);
102*0fbf3537Syasuoka int         npppd_config_str_equali (npppd *, const char *, const char *, int);
103*0fbf3537Syasuoka int         npppd_modules_reload (npppd *);
104*0fbf3537Syasuoka int         npppd_ifaces_load_config(npppd *);
105*0fbf3537Syasuoka int         npppd_reload_config (npppd *);
106*0fbf3537Syasuoka int         npppd_assign_ip_addr (npppd *, npppd_ppp *, uint32_t);
107*0fbf3537Syasuoka void            npppd_release_ip_addr (npppd *, npppd_ppp *);
108*0fbf3537Syasuoka 
109*0fbf3537Syasuoka int        npppd_ppp_bind_realm(npppd *, npppd_ppp *, const char *, int);
110*0fbf3537Syasuoka int        npppd_ppp_is_realm_local(npppd *, npppd_ppp *);
111*0fbf3537Syasuoka int        npppd_ppp_is_realm_radius(npppd *, npppd_ppp *);
112*0fbf3537Syasuoka int        npppd_ppp_is_realm_ready(npppd *, npppd_ppp *);
113*0fbf3537Syasuoka const char *npppd_ppp_get_realm_name(npppd *, npppd_ppp *);
114*0fbf3537Syasuoka int        npppd_ppp_bind_iface(npppd *, npppd_ppp *);
115*0fbf3537Syasuoka void       npppd_ppp_unbind_iface(npppd *, npppd_ppp *);
116*0fbf3537Syasuoka const char *npppd_ppp_get_iface_name(npppd *, npppd_ppp *);
117*0fbf3537Syasuoka void       npppd_radius_server_failure_notify(npppd *, npppd_ppp *, void *, const char *);
118*0fbf3537Syasuoka int        npppd_ppp_pipex_enable(npppd *, npppd_ppp *);
119*0fbf3537Syasuoka int        npppd_ppp_pipex_disable(npppd *, npppd_ppp *);
120*0fbf3537Syasuoka const char *npppd_ppp_get_username_for_auth(npppd *, npppd_ppp *, const char *, char *);
121*0fbf3537Syasuoka int        npppd_reset_routing_table(npppd *, int);
122*0fbf3537Syasuoka #ifdef __cplusplus
123*0fbf3537Syasuoka }
124*0fbf3537Syasuoka #endif
125*0fbf3537Syasuoka #endif
126