summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/vars.h
blob: 64f9b8178c2b88565730aca10f629ef4465c969f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/*
 *	    Written by Toshiharu OHNO (tony-o@iij.ad.jp)
 *
 *   Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the Internet Initiative Japan.  The name of the
 * IIJ may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 * $Id: vars.h,v 1.18 1997/06/09 03:27:42 brian Exp $
 *
 *	TODO:
 */

#ifndef _VARS_H_
#define	_VARS_H_

#include <sys/param.h>

struct confdesc {
  char *name;
  int  myside, hisside;
};

#define	CONF_DISABLE	0
#define	CONF_ENABLE	1

#define	CONF_DENY	0
#define	CONF_ACCEPT	1

#define	ConfVjcomp	0
#define	ConfLqr		1
#define	ConfChap	2
#define	ConfPap		3
#define	ConfAcfcomp	4
#define	ConfProtocomp	5
#define	ConfPred1	6
#define	ConfProxy	7
#define ConfMSExt	8
#define ConfPasswdAuth	9
#define	MAXCONFS	10

#define	Enabled(x)	(pppConfs[x].myside & CONF_ENABLE)
#define	Acceptable(x)	(pppConfs[x].hisside & CONF_ACCEPT)

extern struct confdesc pppConfs[MAXCONFS+1];

struct pppvars {
  u_long var_mru;		/* Initial MRU value */
  u_long pref_mtu;		/* Preferred MTU value */
  int    var_accmap;		/* Initial ACCMAP value */
  int    modem_speed;		/* Current modem speed */
  int    modem_parity;		/* Parity setting */
  int    modem_ctsrts;		/* Use CTS/RTS on modem port? (boolean) */
  int    idle_timeout;		/* Idle timeout value */
  int	 lqr_timeout;		/* LQR timeout value */
  int    retry_timeout;		/* Retry timeout value */
  int    reconnect_timer;	/* Timeout before reconnect on carrier loss */
  int    reconnect_tries;	/* Attempt reconnect on carrier loss */
  int    redial_timeout;	/* Redial timeout value */
  int    redial_next_timeout;	/* Redial next timeout value */
  int    dial_tries;		/* Dial attempts before giving up, 0 == inf */
  char   modem_dev[40];		/* Name of device / host:port */
  char  *base_modem_dev;        /* Pointer to base of modem_dev */
  int	 open_mode;		/* LCP open mode */
#define LOCAL_AUTH	0x01
#define LOCAL_NO_AUTH	0x02
  u_char lauth;			/* Local Authorized status */
  FILE *termfp;			/* The terminal */
#define DIALUP_REQ	0x01
#define DIALUP_DONE	0x02
  char   dial_script[200];	/* Dial script */
  char   login_script[200];	/* Login script */
  char   auth_key[50];		/* PAP/CHAP key */
  char	 auth_name[50];		/* PAP/CHAP system name */
  char   phone_numbers[200];    /* Telephone Numbers */
  char   phone_copy[200];       /* copy for strsep() */
  char   *next_phone;           /* Next phone from the list */
  char   shostname[MAXHOSTNAMELEN];/* Local short Host Name */
  struct aliasHandlers handler; /* Alias function pointers */
};

#define VarAccmap	pppVars.var_accmap
#define VarMRU		pppVars.var_mru
#define VarPrefMTU	pppVars.pref_mtu
#define	VarDevice	pppVars.modem_dev
#define	VarBaseDevice	pppVars.base_modem_dev
#define	VarSpeed	pppVars.modem_speed
#define	VarParity	pppVars.modem_parity
#define	VarCtsRts	pppVars.modem_ctsrts
#define	VarOpenMode	pppVars.open_mode
#define	VarLocalAuth	pppVars.lauth
#define	VarDialScript	pppVars.dial_script
#define	VarLoginScript	pppVars.login_script
#define VarIdleTimeout  pppVars.idle_timeout
#define	VarLqrTimeout	pppVars.lqr_timeout
#define	VarRetryTimeout	pppVars.retry_timeout
#define	VarAuthKey	pppVars.auth_key
#define	VarAuthName	pppVars.auth_name
#define VarPhoneList    pppVars.phone_numbers
#define VarPhoneCopy    pppVars.phone_copy
#define VarNextPhone    pppVars.next_phone
#define	VarShortHost	pppVars.shostname
#define VarReconnectTimer pppVars.reconnect_timer
#define VarReconnectTries pppVars.reconnect_tries
#define VarRedialTimeout pppVars.redial_timeout
#define VarRedialNextTimeout pppVars.redial_next_timeout
#define VarDialTries	pppVars.dial_tries
#define VarTerm		pppVars.termfp

#define VarAliasHandlers	   pppVars.handler
#define VarGetNextFragmentPtr	   (*pppVars.handler.GetNextFragmentPtr)
#define VarGetNextFragmentPtr	   (*pppVars.handler.GetNextFragmentPtr)
#define VarInitPacketAlias	   (*pppVars.handler.InitPacketAlias)
#define VarPacketAliasIn	   (*pppVars.handler.PacketAliasIn)
#define VarPacketAliasOut	   (*pppVars.handler.PacketAliasOut)
#define VarPacketAliasRedirectAddr (*pppVars.handler.PacketAliasRedirectAddr)
#define VarPacketAliasRedirectPort (*pppVars.handler.PacketAliasRedirectPort)
#define VarSaveFragmentPtr	   (*pppVars.handler.SaveFragmentPtr)
#define VarSetPacketAliasAddress   (*pppVars.handler.SetPacketAliasAddress)
#define VarSetPacketAliasMode	   (*pppVars.handler.SetPacketAliasMode)
#define VarFragmentAliasIn	   (*pppVars.handler.FragmentAliasIn)

#define	DEV_IS_SYNC	(VarSpeed == 0)

extern struct pppvars pppVars;

int ipInOctets, ipOutOctets, ipKeepAlive;
int ipConnectSecs, ipIdleSecs;

#define RECON_TRUE (1)
#define RECON_FALSE (2)
#define RECON_UNKNOWN (3)
#define RECON_ENVOKED (3)
#define reconnect(x)                          \
  do                                          \
    if (reconnectState == RECON_UNKNOWN) { \
      reconnectState = x;                  \
      if (x == RECON_FALSE)                   \
        reconnectCount = 0;                   \
    }                                         \
  while(0)

int reconnectState, reconnectCount;
/*
 * This is the logic behind the reconnect variables:
 * We have four reconnect "states".  We start off not requiring anything
 * from the reconnect code (reconnectState == RECON_UNKNOWN).  If the
 * line is brought down (via LcpClose() or LcpDown()), we have to decide
 * whether to set to RECON_TRUE or RECON_FALSE.  It's only here that we
 * know the correct action.  Once we've decided, we don't want that
 * decision to be overridden (hence the above reconnect() macro) - If we
 * call LcpClose, the ModemTimeout() still gets to "notice" that the line
 * is down.  When it "notice"s, it should only set RECON_TRUE if a decision
 * hasn't already been made.
 *
 * In main.c, when we notice we have RECON_TRUE, we must only action
 * it once.  The fourth "state" is where we're bringing the line up,
 * but if we call LcpClose for any reason (failed PAP/CHAP etc) we
 * don't want to set to RECON_{TRUE,FALSE}.
 *
 * If we get a connection or give up dialing, we go back to RECON_UNKNOWN.
 * If we get give up dialing or reconnecting or if we chose to down the
 * connection, we set reconnectCount back to zero.
 *
 */

#endif
OpenPOWER on IntegriCloud