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