Home | History | Annotate | Download | only in src
      1 /*-
      2  * Copyright (c) 1998 Brian Somers <brian (at) Awfulhak.org>
      3  * All rights reserved.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions
      7  * are met:
      8  * 1. Redistributions of source code must retain the above copyright
      9  *    notice, this list of conditions and the following disclaimer.
     10  * 2. Redistributions in binary form must reproduce the above copyright
     11  *    notice, this list of conditions and the following disclaimer in the
     12  *    documentation and/or other materials provided with the distribution.
     13  *
     14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     24  * SUCH DAMAGE.
     25  *
     26  * $FreeBSD: src/usr.sbin/ppp/chat.h,v 1.16.42.1 2010/12/21 17:10:29 kensmith Exp $
     27  */
     28 
     29 #define CHAT_EXPECT 0
     30 #define CHAT_SEND   1
     31 #define CHAT_DONE   2
     32 #define CHAT_FAILED 3
     33 
     34 #define MAXABORTS   50
     35 
     36 struct physical;
     37 
     38 struct chat {
     39   struct fdescriptor desc;
     40   struct physical *physical;
     41 
     42   int state;				/* Our CHAT_* status */
     43 
     44   char script[LINE_LEN];		/* Our arg buffer */
     45   char *argv[MAXARGS];			/* Our arguments (pointing to script) */
     46   int argc;				/* Number of argv's */
     47 
     48   int arg;				/* Our current arg number */
     49   char exp[LINE_LEN];			/* Our translated current argument */
     50   char *argptr;				/* Our current arg pointer */
     51   int arglen;				/* The length of argptr */
     52   char *nargptr;			/* Our next for expect-send-expect */
     53 
     54   char buf[LINE_LEN*2];			/* Our input */
     55   char *bufstart;			/* start of relevent data */
     56   char *bufend;				/* end of relevent data */
     57 
     58   int TimeoutSec;			/* Expect timeout value */
     59   int TimedOut;				/* We timed out */
     60 
     61   const char *phone;			/* Our phone number */
     62 
     63   struct {
     64     struct {
     65       char *data;			/* Abort the dial if we get one */
     66       int len;
     67     } string[MAXABORTS];
     68     int num;				/* How many AbortStrings */
     69   } abort;
     70 
     71   struct pppTimer pause;		/* Inactivity timer */
     72   struct pppTimer timeout;		/* TimeoutSec timer */
     73 };
     74 
     75 #define descriptor2chat(d) \
     76   ((d)->type == CHAT_DESCRIPTOR ? (struct chat *)(d) : NULL)
     77 #define	VECSIZE(v)	(sizeof(v) / sizeof(v[0]))
     78 
     79 extern void chat_Init(struct chat *, struct physical *);
     80 extern int chat_Setup(struct chat *, const char *, const char *);
     81 extern void chat_Finish(struct chat *);
     82 extern void chat_Destroy(struct chat *);
     83