chat.h revision 58028
111894Speter/*- 29Sjkh * Copyright (c) 1998 Brian Somers <brian@Awfulhak.org> 311894Speter * All rights reserved. 411894Speter * 59Sjkh * Redistribution and use in source and binary forms, with or without 69Sjkh * modification, are permitted provided that the following conditions 79Sjkh * are met: 89Sjkh * 1. Redistributions of source code must retain the above copyright 99Sjkh * notice, this list of conditions and the following disclaimer. 109Sjkh * 2. Redistributions in binary form must reproduce the above copyright 119Sjkh * notice, this list of conditions and the following disclaimer in the 129Sjkh * documentation and/or other materials provided with the distribution. 139Sjkh * 149Sjkh * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 159Sjkh * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 169Sjkh * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 179Sjkh * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 189Sjkh * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 199Sjkh * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2011894Speter * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2111894Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2211894Speter * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 239Sjkh * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 249Sjkh * SUCH DAMAGE. 259Sjkh * 269Sjkh * $FreeBSD: head/usr.sbin/ppp/chat.h 58028 2000-03-14 01:46:09Z brian $ 279Sjkh */ 289Sjkh 299Sjkh#define CHAT_EXPECT 0 3011894Speter#define CHAT_SEND 1 3111894Speter#define CHAT_DONE 2 3211894Speter#define CHAT_FAILED 3 338858Srgrimes 3411894Speter#define MAXABORTS 50 3511894Speter 3611894Speterstruct physical; 3711894Speter 3811894Speterstruct chat { 3911894Speter struct fdescriptor desc; 4011894Speter struct physical *physical; 4111894Speter 4211894Speter int state; /* Our CHAT_* status */ 4311894Speter 4411894Speter char script[LINE_LEN]; /* Our arg buffer */ 4511894Speter char *argv[MAXARGS]; /* Our arguments (pointing to script) */ 4611894Speter int argc; /* Number of argv's */ 4711894Speter 4811894Speter int arg; /* Our current arg number */ 4911894Speter char exp[LINE_LEN]; /* Our translated current argument */ 5011894Speter char *argptr; /* Our current arg pointer */ 5111894Speter int arglen; /* The length of argptr */ 5211894Speter char *nargptr; /* Our next for expect-send-expect */ 5311894Speter 5411894Speter char buf[LINE_LEN*2]; /* Our input */ 5511894Speter char *bufstart; /* start of relevent data */ 5611894Speter char *bufend; /* end of relevent data */ 579Sjkh 589Sjkh int TimeoutSec; /* Expect timeout value */ 599Sjkh int TimedOut; /* We timed out */ 609Sjkh 619Sjkh const char *phone; /* Our phone number */ 629Sjkh 639Sjkh struct { 649Sjkh struct { 659Sjkh char *data; /* Abort the dial if we get one */ 669Sjkh int len; 679Sjkh } string[MAXABORTS]; 689Sjkh int num; /* How many AbortStrings */ 699Sjkh } abort; 709Sjkh 719Sjkh struct pppTimer pause; /* Inactivity timer */ 729Sjkh struct pppTimer timeout; /* TimeoutSec timer */ 739Sjkh}; 749Sjkh 759Sjkh#define descriptor2chat(d) \ 769Sjkh ((d)->type == CHAT_DESCRIPTOR ? (struct chat *)(d) : NULL) 779Sjkh#define VECSIZE(v) (sizeof(v) / sizeof(v[0])) 789Sjkh 799Sjkhextern void chat_Init(struct chat *, struct physical *); 809Sjkhextern int chat_Setup(struct chat *, const char *, const char *); 819Sjkhextern void chat_Finish(struct chat *); 829Sjkhextern void chat_Destroy(struct chat *); 839Sjkh