-#define PHASE_ESTABLISH 1
-#define PHASE_AUTHENTICATE 2
-#define PHASE_NETWORK 3
-#define PHASE_TERMINATE 4
+#define PHASE_DORMANT 1
+#define PHASE_ESTABLISH 2
+#define PHASE_AUTHENTICATE 3
+#define PHASE_NETWORK 4
+#define PHASE_TERMINATE 5
+#define PHASE_HOLDOFF 6
+
+/*
+ * The following struct gives the addresses of procedures to call
+ * for a particular protocol.
+ */
+struct protent {
+ u_short protocol; /* PPP protocol number */
+ void (*init)(); /* Initialization procedure */
+ void (*input)(); /* Process a received packet */
+ void (*protrej)(); /* Process a received protocol-reject */
+ void (*lowerup)(); /* Lower layer has come up */
+ void (*lowerdown)(); /* Lower layer has gone down */
+ void (*open)(); /* Open the protocol */
+ void (*close)(); /* Close the protocol */
+ int (*printpkt)(); /* Print a packet in readable form */
+ void (*datainput)(); /* Process a received data packet */
+ int enabled_flag; /* 0 iff protocol is disabled */
+ char *name; /* Text name of protocol */
+ void (*check_options)(); /* Check requested options, assign dflts */
+ int (*demand_conf)(); /* Configure interface for demand-dial */
+};
+
+/* Table of pointers to supported protocols */
+extern struct protent *protocols[];