Annotation of embedaddon/mpd/src/link.h, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * link.h
                      4:  *
                      5:  * Written by Archie Cobbs <archie@freebsd.org>
                      6:  * Copyright (c) 1995-1999 Whistle Communications, Inc. All rights reserved.
                      7:  * See ``COPYRIGHT.whistle''
                      8:  */
                      9: 
                     10: #ifndef _LINK_H_
                     11: #define _LINK_H_
                     12: 
                     13: #include "defs.h"
                     14: #include "proto.h"
                     15: #include "lcp.h"
                     16: #include "ip.h"
                     17: #include "mp.h"
                     18: #include "vars.h"
                     19: #include "auth.h"
                     20: #include "fsm.h"
                     21: #include "mbuf.h"
                     22: #include "phys.h"
                     23: #include "vars.h"
                     24: #include <netgraph/ng_ppp.h>
                     25: #include <regex.h>
                     26: 
                     27: /*
                     28:  * DEFINITIONS
                     29:  */
                     30: 
                     31:   /* Bounds */
                     32:   /* Default bundle-layer FSM retry timeout */
                     33:   #define LINK_DEFAULT_RETRY   2
                     34: 
                     35:   /* Default latency and bandwidth */
                     36:   #define LINK_DEFAULT_BANDWIDTH       64000           /* 64k */
                     37:   #define LINK_DEFAULT_LATENCY         2000            /* 2ms */
                     38: 
                     39:   enum {
                     40:     LINK_ACTION_FORWARD,
                     41:     LINK_ACTION_BUNDLE,
                     42:     LINK_ACTION_DROP
                     43:   };
                     44: 
                     45:   struct linkaction {
                     46:     int                action;
                     47:     char               regex[128];
                     48:     regex_t            regexp;
                     49:     char               arg[LINK_MAX_NAME];     /* Link/Bundle template name */
                     50:     SLIST_ENTRY(linkaction) next;
                     51:   };
                     52: 
                     53:   /* Configuration options */
                     54:   enum {
                     55:     LINK_CONF_PAP,
                     56:     LINK_CONF_CHAPMD5,
                     57:     LINK_CONF_CHAPMSv1,
                     58:     LINK_CONF_CHAPMSv2,
                     59:     LINK_CONF_EAP,
                     60:     LINK_CONF_INCOMING,
                     61:     LINK_CONF_ACFCOMP,
                     62:     LINK_CONF_PROTOCOMP,
                     63:     LINK_CONF_MSDOMAIN,
                     64:     LINK_CONF_MAGICNUM,
                     65:     LINK_CONF_PASSIVE,
                     66:     LINK_CONF_CHECK_MAGIC,
                     67:     LINK_CONF_RINGBACK,
                     68:     LINK_CONF_NO_ORIG_AUTH,
                     69:     LINK_CONF_CALLBACK,
                     70:     LINK_CONF_MULTILINK,       /* multi-link */
                     71:     LINK_CONF_SHORTSEQ,                /* multi-link short sequence numbers */
                     72:     LINK_CONF_TIMEREMAIN,      /* Send LCP Time-Remain if known */
                     73:     LINK_CONF_PEER_AS_CALLING,
                     74:     LINK_CONF_REPORT_MAC
                     75:   };
                     76: 
                     77:   /* Configuration for a link */
                     78:   struct linkconf {
                     79:     u_short            mtu;            /* Initial MTU value */
                     80:     u_short            mru;            /* Initial MRU value */
                     81:     uint16_t           mrru;           /* Initial MRRU value */
                     82:     uint32_t           accmap;         /* Initial ACCMAP value */
                     83:     short              retry_timeout;  /* FSM timeout for retries */
                     84:     short              max_redial;     /* Max failed connect attempts */
                     85:     short              redial_delay;   /* Failed connect retry time */
                     86:     char               *ident;         /* LCP ident string */
                     87:     struct optinfo     options;        /* Configured options */
                     88:     int                        max_children;   /* Maximal number of children */
                     89:   };
                     90: 
                     91:   struct linkbm {
                     92:     struct ng_ppp_link_stat
                     93:                idleStats;              /* Link management stats */
                     94:   };
                     95:   typedef struct linkbm        *LinkBm;
                     96: 
                     97:   /* Values for link origination (must fit in 2 bits) */
                     98:   #define LINK_ORIGINATE_UNKNOWN       0
                     99:   #define LINK_ORIGINATE_LOCAL         1
                    100:   #define LINK_ORIGINATE_REMOTE                2
                    101: 
                    102:   #define LINK_ORIGINATION(o)  ((o) == LINK_ORIGINATE_LOCAL ? "local" :    \
                    103:                                 (o) == LINK_ORIGINATE_REMOTE ? "remote" :  \
                    104:                                 "unknown")
                    105: 
                    106:   /* Total state of a link */
                    107:   struct linkst {
                    108:     char               name[LINK_MAX_NAME];    /* Human readable name */
                    109:     int                        id;                     /* Index of this link in gLinks */
                    110:     u_char             tmpl;                   /* This is template, not an instance */
                    111:     u_char             stay;                   /* Must not disappear */
                    112:     u_char             state;                  /* Device current state */
                    113:     u_char             joined_bund;            /* Link successfully joined bundle */
                    114:     u_char             originate;              /* Who originated the connection */
                    115:     u_char             die;                    /* LCP agreed to die */
                    116:     u_char             dead;                   /* Dead flag (shutted down) */
                    117:     Bund               bund;                   /* My bundle */
                    118:     Rep                        rep;                    /* Rep connected to the device */
                    119:     int                        bundleIndex;            /* Link number in bundle */
                    120:     int                        parent;                 /* Index of the parent in gLinks */
                    121:     int                        children;               /* Number of children */
                    122:     int                        refs;                   /* Number of references */
                    123:     char               hook[NG_HOOKSIZ];       /* session hook name */
                    124:     ng_ID_t            nodeID;                 /* ID of the tee node */
                    125:     MsgHandler         msgs;                   /* Link events */
                    126:     SLIST_HEAD(, linkaction) actions;
                    127: 
                    128:     /* State info */
                    129:     struct linkconf    conf;           /* Link configuration */
                    130:     struct lcpstate    lcp;            /* LCP state info */
                    131:     struct linkbm      bm;             /* Link bandwidth mgmt info */
                    132:     struct ng_ppp_link_stat64  stats;  /* Link statistics */
                    133: #ifndef NG_PPP_STATS64
                    134:     struct ng_ppp_link_stat oldStats;  /* Previous stats for 64bit emulation */
                    135: #endif
                    136: 
                    137:     /* Link properties */
                    138:     short              num_redial;     /* Counter for retry attempts */
                    139:     u_char             upReasonValid;
                    140:     u_char             downReasonValid;
                    141:     char               *upReason;      /* Reason for link going up */
                    142:     char               *downReason;    /* Reason for link going down */
                    143:     int                        bandwidth;      /* Bandwidth in bits per second */
                    144:     int                        latency;        /* Latency in microseconds */
                    145:     time_t             last_up;        /* Time this link last got up */
                    146:     char               msession_id[AUTH_MAX_SESSIONID]; /* a uniq msession-id */
                    147:     char               session_id[AUTH_MAX_SESSIONID]; /* a uniq session-id */
                    148: 
                    149:     PhysType           type;                   /* Device type descriptor */
                    150:     void               *info;                  /* Type specific info */
                    151:     MsgHandler         pmsgs;                  /* Message channel */
                    152:     struct pppTimer    openTimer;              /* Open retry timer */
                    153:   };
                    154: 
                    155:   
                    156: /*
                    157:  * VARIABLES
                    158:  */
                    159: 
                    160:   extern const struct cmdtab   LinkSetCmds[];
                    161: 
                    162:   extern int           gLinksCsock;            /* Socket node control socket */
                    163:   extern int           gLinksDsock;            /* Socket node data socket */
                    164: 
                    165: /*
                    166:  * FUNCTIONS
                    167:  */
                    168:   extern int   LinksInit(void);
                    169:   extern void  LinksShutdown(void);
                    170: 
                    171:   extern void  LinkUp(Link l);
                    172:   extern void  LinkDown(Link l);
                    173:   extern void  LinkOpen(Link l);
                    174:   extern void  LinkClose(Link l);
                    175:   extern int   LinkOpenCmd(Context ctx);
                    176:   extern int   LinkCloseCmd(Context ctx);
                    177: 
                    178:   extern int   LinkCreate(Context ctx, int ac, char *av[], void *arg);
                    179:   extern int   LinkDestroy(Context ctx, int ac, char *av[], void *arg);
                    180:   extern Link  LinkInst(Link lt, char *name, int tmpl, int stay);
                    181:   extern void  LinkShutdownCheck(Link l, short state);
                    182:   extern void  LinkShutdown(Link l);
                    183:   extern int   LinkNgInit(Link l);
                    184:   extern int   LinkNgJoin(Link l);
                    185:   extern int   LinkNgToRep(Link l);
                    186:   extern int   LinkNgLeave(Link l);
                    187:   extern void  LinkNgShutdown(Link l);
                    188:   extern int   LinkNuke(Link link);
                    189:   extern int   LinkStat(Context ctx, int ac, char *av[], void *arg);
                    190:   extern void  LinkUpdateStats(Link l);
                    191:   extern void  LinkResetStats(Link l);
                    192:   extern Link  LinkFind(const char *name);
                    193:   extern int   LinkCommand(Context ctx, int ac, char *av[], void *arg);
                    194:   extern int   SessionCommand(Context ctx, int ac, char *av[], void *arg);
                    195:   extern int   AuthnameCommand(Context ctx, int ac, char *av[], void *arg);
                    196:   extern void  RecordLinkUpDownReason(Bund b, Link l, int up, const char *fmt,
                    197:                          const char *arg, ...);
                    198: 
                    199:   extern const char    *LinkMatchAction(Link l, int stage, char *login);
                    200: 
                    201: #endif
                    202: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>