Annotation of embedaddon/mpd/src/ppp.h, revision 1.1
1.1 ! misho 1:
! 2: /*
! 3: * ppp.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 _PPP_H_
! 11: #define _PPP_H_
! 12:
! 13: /* Keep source files simple */
! 14:
! 15: #include <sys/types.h>
! 16: #include <sys/param.h>
! 17: #include <sys/socket.h>
! 18: #include <sys/ioctl.h>
! 19: #include <poll.h>
! 20: #include <sys/time.h>
! 21: #include <sys/uio.h>
! 22: #include <sys/queue.h>
! 23: #include <stdio.h>
! 24: #include <stdlib.h>
! 25: #include <limits.h>
! 26: #include <stddef.h>
! 27: #include <stdarg.h>
! 28: #include <string.h>
! 29: #include <signal.h>
! 30: #include <ctype.h>
! 31: #include <unistd.h>
! 32: #include <errno.h>
! 33: #include <err.h>
! 34: #include <netdb.h>
! 35: #include <fcntl.h>
! 36: #include <machine/endian.h>
! 37: #include <net/ppp_defs.h>
! 38: #include <netinet/in.h>
! 39: #include <arpa/inet.h>
! 40:
! 41: #include <pthread.h>
! 42: #ifdef NOLIBPDEL
! 43: #include "contrib/libpdel/structs/structs.h"
! 44: #include "contrib/libpdel/structs/type/array.h"
! 45: #include "contrib/libpdel/util/typed_mem.h"
! 46: #include "contrib/libpdel/util/pevent.h"
! 47: #include "contrib/libpdel/util/paction.h"
! 48: #include "contrib/libpdel/util/ghash.h"
! 49: #else
! 50: #include <pdel/structs/structs.h>
! 51: #include <pdel/structs/type/array.h>
! 52: #include <pdel/util/typed_mem.h>
! 53: #include <pdel/util/pevent.h>
! 54: #include <pdel/util/paction.h>
! 55: #include <pdel/util/ghash.h>
! 56: #endif
! 57:
! 58: #include <netgraph/ng_message.h>
! 59: #include <netgraph/ng_ppp.h>
! 60:
! 61: #include "defs.h"
! 62:
! 63: /*
! 64: * DEFINITIONS
! 65: */
! 66:
! 67: /* Do our own version of assert() so it shows up in the logs */
! 68: #define assert(e) ((e) ? (void)0 : DoAssert(__FILE__, __LINE__, #e))
! 69:
! 70: /* Giant Mutex handling */
! 71: #define GIANT_MUTEX_LOCK() assert(pthread_mutex_lock(&gGiantMutex) == 0)
! 72: #define GIANT_MUTEX_UNLOCK() assert(pthread_mutex_unlock(&gGiantMutex) == 0)
! 73:
! 74: #define MUTEX_LOCK(m) assert(pthread_mutex_lock(&m) == 0)
! 75: #define MUTEX_UNLOCK(m) assert(pthread_mutex_unlock(&m) == 0)
! 76:
! 77: #define RWLOCK_RDLOCK(m) assert(pthread_rwlock_rdlock(&m) == 0)
! 78: #define RWLOCK_WRLOCK(m) assert(pthread_rwlock_wrlock(&m) == 0)
! 79: #define RWLOCK_UNLOCK(m) assert(pthread_rwlock_unlock(&m) == 0)
! 80:
! 81: #define SETOVERLOAD(q) do { \
! 82: int t = (q); \
! 83: if (t > 60) { \
! 84: gOverload = 100; \
! 85: } else if (t > 10) { \
! 86: gOverload = (t - 10) * 2; \
! 87: } else { \
! 88: gOverload = 0; \
! 89: } \
! 90: } while (0)
! 91:
! 92: #define OVERLOAD() (gOverload > (random() % 100))
! 93:
! 94: #define REF(p) do { \
! 95: (p)->refs++; \
! 96: } while (0)
! 97:
! 98: #define UNREF(p) do { \
! 99: if ((--(p)->refs) == 0) \
! 100: Freee(p); \
! 101: } while (0)
! 102:
! 103: #define RESETREF(v, p) do { \
! 104: if (v) UNREF(v); \
! 105: (v) = (p); \
! 106: if (v) REF(v); \
! 107: } while (0)
! 108:
! 109: #define ADLG_WAN_AUTHORIZATION_FAILURE 0
! 110: #define ADLG_WAN_CONNECTED 1
! 111: #define ADLG_WAN_CONNECTING 2
! 112: #define ADLG_WAN_CONNECT_FAILURE 3
! 113: #define ADLG_WAN_DISABLED 4
! 114: #define ADLG_WAN_MESSAGE 5
! 115: #define ADLG_WAN_NEGOTIATION_FAILURE 6
! 116: #define ADLG_WAN_WAIT_FOR_DEMAND 7
! 117:
! 118: #ifndef NG_PPP_STATS64
! 119: /* internal 64 bit counters as workaround for the 32 bit
! 120: * limitation for ng_ppp_link_stat
! 121: */
! 122: struct ng_ppp_link_stat64 {
! 123: u_int64_t xmitFrames; /* xmit frames on link */
! 124: u_int64_t xmitOctets; /* xmit octets on link */
! 125: u_int64_t recvFrames; /* recv frames on link */
! 126: u_int64_t recvOctets; /* recv octets on link */
! 127: u_int64_t badProtos; /* frames rec'd with bogus protocol */
! 128: u_int64_t runts; /* Too short MP fragments */
! 129: u_int64_t dupFragments; /* MP frames with duplicate seq # */
! 130: u_int64_t dropFragments; /* MP fragments we had to drop */
! 131: };
! 132: #endif
! 133:
! 134: #if defined(USE_NG_BPF) || defined(USE_IPFW)
! 135: /* max. length of acl rule */
! 136: #define ACL_LEN 256
! 137: #define ACL_NAME_LEN 16
! 138: /* max. number of acl_filters */
! 139: #define ACL_FILTERS 16
! 140: /* There are two directions for acl_limits */
! 141: #define ACL_DIRS 2
! 142: #endif
! 143:
! 144: #ifdef USE_NG_BPF
! 145: struct svcssrc {
! 146: int type;
! 147: #define SSSS_IN 1
! 148: #define SSSS_MATCH 2
! 149: #define SSSS_NOMATCH 3
! 150: #define SSSS_OUT 4
! 151: char hook[NG_HOOKSIZ];
! 152: SLIST_ENTRY(svcssrc) next;
! 153: };
! 154:
! 155: struct svcs {
! 156: char name[ACL_NAME_LEN]; /* Name of ACL */
! 157: SLIST_HEAD(, svcssrc) src;
! 158: SLIST_ENTRY(svcs) next;
! 159: };
! 160:
! 161: struct svcstatrec {
! 162: char name[ACL_NAME_LEN]; /* Name of ACL */
! 163: u_int64_t Packets;
! 164: u_int64_t Octets;
! 165: SLIST_ENTRY(svcstatrec) next;
! 166: };
! 167:
! 168: struct svcstat {
! 169: SLIST_HEAD(, svcstatrec) stat[ACL_DIRS];
! 170: };
! 171: #endif /* USE_NG_BPF */
! 172:
! 173: #include "bund.h"
! 174: #include "link.h"
! 175: #include "rep.h"
! 176: #include "phys.h"
! 177: #include "msgdef.h"
! 178:
! 179: /*
! 180: * VARIABLES
! 181: */
! 182:
! 183: extern Rep *gReps; /* Repeaters */
! 184: extern Link *gLinks; /* Links */
! 185: extern Bund *gBundles; /* Bundles */
! 186:
! 187: extern int gNumReps; /* Total number of repeaters */
! 188: extern int gNumLinks; /* Total number of links */
! 189: extern int gNumBundles; /* Total number of bundles */
! 190: extern struct console gConsole;
! 191: extern struct web gWeb;
! 192: extern struct radsrv gRadsrv;
! 193: extern int gBackground;
! 194: extern int gShutdownInProgress;
! 195: extern int gOverload;
! 196: extern pid_t gPid;
! 197: extern int gRouteSeq;
! 198:
! 199: #ifdef PHYSTYPE_PPTP
! 200: extern int gPPTPto;
! 201: extern int gPPTPtunlimit;
! 202: #endif
! 203: #ifdef PHYSTYPE_L2TP
! 204: extern int gL2TPto;
! 205: extern int gL2TPtunlimit;
! 206: #endif
! 207: extern int gChildren;
! 208: extern int gMaxChildren;
! 209:
! 210: extern struct globalconf gGlobalConf; /* Global config settings */
! 211:
! 212: #ifdef USE_NG_BPF
! 213: extern struct acl *acl_filters[ACL_FILTERS]; /* mpd's internal bpf filters */
! 214: #endif
! 215:
! 216: extern struct pevent_ctx *gPeventCtx;
! 217: extern pthread_mutex_t gGiantMutex; /* Giant Mutex */
! 218:
! 219: extern const char *gVersion; /* Program version string */
! 220: extern const char *gConfigFile; /* Main config file */
! 221: extern const char *gConfDirectory; /* Where the files are */
! 222:
! 223: /*
! 224: * FUNCTIONS
! 225: */
! 226:
! 227: extern void Greetings(void);
! 228: extern void SendSignal(int sig);
! 229: extern void DoExit(int code) __dead2;
! 230: extern void DoAssert(const char *file, int line, const char *x) __dead2;
! 231: extern void CheckOneShot(void);
! 232:
! 233: #endif
! 234:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>