Annotation of embedaddon/mpd/src/link.h, revision 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>