#define DATALINK_CLOSED (0)
#define DATALINK_OPENING (1)
#define DATALINK_HANGUP (2)
#define DATALINK_DIAL (3)
#define DATALINK_CARRIER (4)
#define DATALINK_LOGOUT (5)
#define DATALINK_LOGIN (6)
#define DATALINK_READY (7)
#define DATALINK_LCP (8)
#define DATALINK_AUTH (9)
#define DATALINK_CBCP (10)
#define DATALINK_OPEN (11)
#define DATALINK_MAXNAME (20)
#define CLOSE_NORMAL 0
#define CLOSE_STAYDOWN 1
#define CLOSE_LCP 2
struct iovec;
struct prompt;
struct physical;
struct bundle;
struct datalink {
struct fdescriptor desc;
unsigned state;
struct physical *physical;
struct chat chat;
unsigned stayonline : 1;
struct {
unsigned run : 1;
unsigned packetmode : 1;
} script;
struct {
struct {
char dial[SCRIPT_LEN];
char login[SCRIPT_LEN];
char logout[SCRIPT_LEN];
char hangup[SCRIPT_LEN];
} script;
struct {
char list[SCRIPT_LEN];
} phone;
struct {
int max;
int next_timeout;
int inc;
int maxinc;
int timeout;
} dial;
struct {
int max;
int timeout;
} reconnect;
struct callback callback;
struct cbcpcfg cbcp;
} cfg;
struct {
char list[SCRIPT_LEN];
char *next;
char *alt;
const char *chosen;
} phone;
struct cbcp cbcp;
struct {
struct pppTimer timer;
int tries;
int incs;
} dial;
unsigned reconnect_tries;
char *name;
struct peerid peer;
struct fsm_parent fsmp;
const struct fsm_parent *parent;
struct authinfo pap;
struct chap chap;
struct mp_link mp;
struct bundle *bundle;
struct datalink *next;
};
#define descriptor2datalink(d) \
((d)->type == DATALINK_DESCRIPTOR ? (struct datalink *)(d) : NULL)
extern struct datalink *datalink_Create(const char *name, struct bundle *, int);
extern struct datalink *datalink_Clone(struct datalink *, const char *);
extern struct datalink *iov2datalink(struct bundle *, struct iovec *, int *,
int, int, int *, int *);
extern int datalink2iov(struct datalink *, struct iovec *, int *, int, int *,
int *);
extern struct datalink *datalink_Destroy(struct datalink *);
extern void datalink_GotAuthname(struct datalink *, const char *);
extern void datalink_Up(struct datalink *, int, int);
extern void datalink_Close(struct datalink *, int);
extern void datalink_Down(struct datalink *, int);
extern void datalink_StayDown(struct datalink *);
extern void datalink_DontHangup(struct datalink *);
extern void datalink_AuthOk(struct datalink *);
extern void datalink_AuthNotOk(struct datalink *);
extern void datalink_NCPUp(struct datalink *);
extern void datalink_CBCPComplete(struct datalink *);
extern void datalink_CBCPFailed(struct datalink *);
extern int datalink_Show(struct cmdargs const *);
extern int datalink_SetRedial(struct cmdargs const *);
extern int datalink_SetReconnect(struct cmdargs const *);
extern const char *datalink_State(struct datalink *);
extern void datalink_Rename(struct datalink *, const char *);
extern int datalink_RemoveFromSet(struct datalink *, fd_set *, fd_set *,
fd_set *);
extern int datalink_SetMode(struct datalink *, int);
extern int datalink_GetDialTimeout(struct datalink *);
extern const char *datalink_ChoosePhoneNumber(struct datalink *);
extern void datalink_ComeDown(struct datalink *, int);