xref: /openbsd/usr.sbin/npppd/npppd/npppd.h (revision e109dc18)
1*e109dc18Syasuoka /* $OpenBSD: npppd.h,v 1.5 2010/07/02 21:20:57 yasuoka Exp $ */
2*e109dc18Syasuoka 
30fbf3537Syasuoka /*-
40fbf3537Syasuoka  * Copyright (c) 2009 Internet Initiative Japan Inc.
50fbf3537Syasuoka  * All rights reserved.
60fbf3537Syasuoka  *
70fbf3537Syasuoka  * Redistribution and use in source and binary forms, with or without
80fbf3537Syasuoka  * modification, are permitted provided that the following conditions
90fbf3537Syasuoka  * are met:
100fbf3537Syasuoka  * 1. Redistributions of source code must retain the above copyright
110fbf3537Syasuoka  *    notice, this list of conditions and the following disclaimer.
120fbf3537Syasuoka  * 2. Redistributions in binary form must reproduce the above copyright
130fbf3537Syasuoka  *    notice, this list of conditions and the following disclaimer in the
140fbf3537Syasuoka  *    documentation and/or other materials provided with the distribution.
150fbf3537Syasuoka  *
160fbf3537Syasuoka  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
170fbf3537Syasuoka  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
180fbf3537Syasuoka  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
190fbf3537Syasuoka  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
200fbf3537Syasuoka  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
210fbf3537Syasuoka  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
220fbf3537Syasuoka  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
230fbf3537Syasuoka  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
240fbf3537Syasuoka  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
250fbf3537Syasuoka  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
260fbf3537Syasuoka  * SUCH DAMAGE.
270fbf3537Syasuoka  */
280fbf3537Syasuoka #ifndef	NPPPD_H
290fbf3537Syasuoka #define	NPPPD_H 1
300fbf3537Syasuoka 
314a78f66bSyasuoka #define	NPPPD_USER			"_npppd"
320fbf3537Syasuoka 
330fbf3537Syasuoka #ifndef	NPPPD_DEFAULT_TUN_IFNAME
340fbf3537Syasuoka #define	NPPPD_DEFAULT_TUN_IFNAME	"tun0"
350fbf3537Syasuoka #endif
360fbf3537Syasuoka 
370fbf3537Syasuoka 
380fbf3537Syasuoka #define	DEFAULT_RADIUS_AUTH_IPADDR	"127.0.0.1"
390fbf3537Syasuoka #define	DEFAULT_RADIUS_AUTH_PORT	1812
400fbf3537Syasuoka #define	DEFAULT_RADIUS_AUTH_TIMEOUT	9
410fbf3537Syasuoka 
420fbf3537Syasuoka #define	DEFAULT_AUTH_TIMEOUT		30
430fbf3537Syasuoka 
44f0a4e295Syasuoka /** assign fixed IP address */
450fbf3537Syasuoka #define NPPPD_IP_ASSIGN_FIXED		0x0001
460fbf3537Syasuoka 
47f0a4e295Syasuoka /** accept IP address which is proposed by peer and assign it */
480fbf3537Syasuoka #define NPPPD_IP_ASSIGN_USER_SELECT	0x0002
490fbf3537Syasuoka 
50f0a4e295Syasuoka /** use RADIUS Framed-IP-Address */
510fbf3537Syasuoka #define NPPPD_IP_ASSIGN_RADIUS		0x0004
520fbf3537Syasuoka 
530fbf3537Syasuoka /** sockaddr_npppd */
540fbf3537Syasuoka struct sockaddr_npppd {
550fbf3537Syasuoka 	struct sockaddr_in sin4;
560fbf3537Syasuoka 	struct sockaddr_in sin4mask;
570fbf3537Syasuoka #define			snp_len		sin4.sin_len
580fbf3537Syasuoka #define			snp_family	sin4.sin_family
590fbf3537Syasuoka #define			snp_addr	sin4.sin_addr
600fbf3537Syasuoka 	int		snp_type;	/* SNP_POOL or SNP_PPP */
610fbf3537Syasuoka #define			snp_mask	sin4mask.sin_addr
62f0a4e295Syasuoka 	/** next entry */
630fbf3537Syasuoka 	struct sockaddr_npppd *snp_next;
64f0a4e295Syasuoka 	/** contents of entry */
650fbf3537Syasuoka 	void 		*snp_data_ptr;
660fbf3537Syasuoka };
670fbf3537Syasuoka #define	SNP_POOL		1
680fbf3537Syasuoka #define	SNP_DYN_POOL		2
690fbf3537Syasuoka #define	SNP_PPP			3
700fbf3537Syasuoka 
710fbf3537Syasuoka typedef struct _npppd		npppd;
720fbf3537Syasuoka 
730fbf3537Syasuoka #include "ppp.h"
740fbf3537Syasuoka 
750fbf3537Syasuoka #ifdef __cplusplus
760fbf3537Syasuoka extern "C" {
770fbf3537Syasuoka #endif
780fbf3537Syasuoka 
790fbf3537Syasuoka 
800fbf3537Syasuoka npppd      *npppd_get_npppd (void);
810fbf3537Syasuoka int        npppd_init (npppd *, const char *);
820fbf3537Syasuoka void       npppd_stop (npppd *);
830fbf3537Syasuoka void       npppd_fini (npppd *);
840fbf3537Syasuoka int        npppd_prepare_ip (npppd *, npppd_ppp *);
850fbf3537Syasuoka void       npppd_release_ip (npppd *, npppd_ppp *);
860fbf3537Syasuoka int        nppp_load_user_setting(npppd *, npppd_ppp *);
870fbf3537Syasuoka void       npppd_set_ip_enabled (npppd *, npppd_ppp *, int);
880fbf3537Syasuoka int        npppd_get_user_password (npppd *, npppd_ppp *, const char *, char *, int *);
890fbf3537Syasuoka struct in_addr *npppd_get_user_framed_ip_address(npppd *, npppd_ppp *, const char *);
900fbf3537Syasuoka int        npppd_check_calling_number (npppd *, npppd_ppp *);
910fbf3537Syasuoka void       npppd_network_output (npppd *, npppd_ppp *, int, u_char *, int);
920fbf3537Syasuoka void       npppd_network_input (npppd *, uint8_t *, int);
930fbf3537Syasuoka npppd_ppp  *npppd_get_ppp_by_ip (npppd *, struct in_addr);
940fbf3537Syasuoka slist      *npppd_get_ppp_by_user (npppd *, const char *);
950fbf3537Syasuoka int        npppd_check_user_max_session(npppd *, npppd_ppp *);
960fbf3537Syasuoka int        npppd_get_all_users (npppd *, slist *);
970fbf3537Syasuoka int        npppd_set_radish (npppd *, void *);
980fbf3537Syasuoka int        npppd_ppp_iface_is_ready(npppd *, npppd_ppp *);
990fbf3537Syasuoka int        sockaddr_npppd_match(void *, void *);
1000fbf3537Syasuoka npppd_ppp  *npppd_get_ppp_by_id(npppd *, int);
1010fbf3537Syasuoka 
1020fbf3537Syasuoka const char  *npppd_config_str (npppd *, const char *);
1030fbf3537Syasuoka int         npppd_config_int (npppd *, const char *, int);
1040fbf3537Syasuoka int         npppd_config_str_equal (npppd *, const char *, const char *, int);
1050fbf3537Syasuoka int         npppd_config_str_equali (npppd *, const char *, const char *, int);
1060fbf3537Syasuoka int         npppd_modules_reload (npppd *);
1070fbf3537Syasuoka int         npppd_ifaces_load_config(npppd *);
1080fbf3537Syasuoka int         npppd_reload_config (npppd *);
1090fbf3537Syasuoka int         npppd_assign_ip_addr (npppd *, npppd_ppp *, uint32_t);
1100fbf3537Syasuoka void            npppd_release_ip_addr (npppd *, npppd_ppp *);
1110fbf3537Syasuoka 
1120fbf3537Syasuoka int        npppd_ppp_bind_realm(npppd *, npppd_ppp *, const char *, int);
1130fbf3537Syasuoka int        npppd_ppp_is_realm_local(npppd *, npppd_ppp *);
1140fbf3537Syasuoka int        npppd_ppp_is_realm_radius(npppd *, npppd_ppp *);
1150fbf3537Syasuoka int        npppd_ppp_is_realm_ready(npppd *, npppd_ppp *);
1160fbf3537Syasuoka const char *npppd_ppp_get_realm_name(npppd *, npppd_ppp *);
1170fbf3537Syasuoka int        npppd_ppp_bind_iface(npppd *, npppd_ppp *);
1180fbf3537Syasuoka void       npppd_ppp_unbind_iface(npppd *, npppd_ppp *);
1190fbf3537Syasuoka const char *npppd_ppp_get_iface_name(npppd *, npppd_ppp *);
12053f89ef8Syasuoka void *     npppd_get_radius_req_setting(npppd *, npppd_ppp *);
1210fbf3537Syasuoka void       npppd_radius_server_failure_notify(npppd *, npppd_ppp *, void *, const char *);
1220fbf3537Syasuoka int        npppd_ppp_pipex_enable(npppd *, npppd_ppp *);
1230fbf3537Syasuoka int        npppd_ppp_pipex_disable(npppd *, npppd_ppp *);
1240fbf3537Syasuoka const char *npppd_ppp_get_username_for_auth(npppd *, npppd_ppp *, const char *, char *);
1250fbf3537Syasuoka int        npppd_reset_routing_table(npppd *, int);
1260fbf3537Syasuoka #ifdef __cplusplus
1270fbf3537Syasuoka }
1280fbf3537Syasuoka #endif
1290fbf3537Syasuoka #endif
130