datalink.c (43525) | datalink.c (43693) |
---|---|
1/*- 2 * Copyright (c) 1998 Brian Somers <brian@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 unchanged lines hidden (view full) --- 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 * | 1/*- 2 * Copyright (c) 1998 Brian Somers <brian@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 unchanged lines hidden (view full) --- 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 * $Id: datalink.c,v 1.27 1999/02/01 13:42:24 brian Exp $ | 26 * $Id: datalink.c,v 1.28 1999/02/02 09:35:17 brian Exp $ |
27 */ 28 29#include <sys/param.h> 30#include <netinet/in.h> 31#include <netinet/in_systm.h> 32#include <netinet/ip.h> 33#include <sys/un.h> 34 --- 429 unchanged lines hidden (view full) --- 464 465static void 466datalink_LayerUp(void *v, struct fsm *fp) 467{ 468 /* The given fsm is now up */ 469 struct datalink *dl = (struct datalink *)v; 470 471 if (fp->proto == PROTO_LCP) { | 27 */ 28 29#include <sys/param.h> 30#include <netinet/in.h> 31#include <netinet/in_systm.h> 32#include <netinet/ip.h> 33#include <sys/un.h> 34 --- 429 unchanged lines hidden (view full) --- 464 465static void 466datalink_LayerUp(void *v, struct fsm *fp) 467{ 468 /* The given fsm is now up */ 469 struct datalink *dl = (struct datalink *)v; 470 471 if (fp->proto == PROTO_LCP) { |
472 datalink_GotAuthname(dl, "", 0); | 472 datalink_GotAuthname(dl, ""); |
473 dl->physical->link.lcp.auth_ineed = dl->physical->link.lcp.want_auth; 474 dl->physical->link.lcp.auth_iwait = dl->physical->link.lcp.his_auth; 475 if (dl->physical->link.lcp.his_auth || dl->physical->link.lcp.want_auth) { 476 if (bundle_Phase(dl->bundle) == PHASE_ESTABLISH) 477 bundle_NewPhase(dl->bundle, PHASE_AUTHENTICATE); 478 log_Printf(LogPHASE, "%s: his = %s, mine = %s\n", dl->name, 479 Auth2Nam(dl->physical->link.lcp.his_auth), 480 Auth2Nam(dl->physical->link.lcp.want_auth)); 481 if (dl->physical->link.lcp.his_auth == PROTO_PAP) | 473 dl->physical->link.lcp.auth_ineed = dl->physical->link.lcp.want_auth; 474 dl->physical->link.lcp.auth_iwait = dl->physical->link.lcp.his_auth; 475 if (dl->physical->link.lcp.his_auth || dl->physical->link.lcp.want_auth) { 476 if (bundle_Phase(dl->bundle) == PHASE_ESTABLISH) 477 bundle_NewPhase(dl->bundle, PHASE_AUTHENTICATE); 478 log_Printf(LogPHASE, "%s: his = %s, mine = %s\n", dl->name, 479 Auth2Nam(dl->physical->link.lcp.his_auth), 480 Auth2Nam(dl->physical->link.lcp.want_auth)); 481 if (dl->physical->link.lcp.his_auth == PROTO_PAP) |
482 auth_StartChallenge(&dl->pap, dl->physical, pap_SendChallenge); | 482 auth_StartReq(&dl->pap); |
483 if (dl->physical->link.lcp.want_auth == PROTO_CHAP) | 483 if (dl->physical->link.lcp.want_auth == PROTO_CHAP) |
484 auth_StartChallenge(&dl->chap.auth, dl->physical, chap_SendChallenge); | 484 auth_StartReq(&dl->chap.auth); |
485 } else 486 datalink_AuthOk(dl); 487 } 488} 489 490void | 485 } else 486 datalink_AuthOk(dl); 487 } 488} 489 490void |
491datalink_GotAuthname(struct datalink *dl, const char *name, int len) | 491datalink_GotAuthname(struct datalink *dl, const char *name) |
492{ | 492{ |
493 if (len >= sizeof dl->peer.authname) 494 len = sizeof dl->peer.authname - 1; 495 strncpy(dl->peer.authname, name, len); 496 dl->peer.authname[len] = '\0'; | 493 strncpy(dl->peer.authname, name, sizeof dl->peer.authname - 1); 494 dl->peer.authname[sizeof dl->peer.authname - 1] = '\0'; |
497} 498 499void 500datalink_NCPUp(struct datalink *dl) 501{ 502 int ccpok = ccp_SetOpenMode(&dl->physical->link.ccp); 503 504 if (dl->physical->link.lcp.want_mrru && dl->physical->link.lcp.his_mrru) { --- 214 unchanged lines hidden (view full) --- 719 peerid_Init(&dl->peer); 720 dl->parent = &bundle->fsm; 721 dl->fsmp.LayerStart = datalink_LayerStart; 722 dl->fsmp.LayerUp = datalink_LayerUp; 723 dl->fsmp.LayerDown = datalink_LayerDown; 724 dl->fsmp.LayerFinish = datalink_LayerFinish; 725 dl->fsmp.object = dl; 726 | 495} 496 497void 498datalink_NCPUp(struct datalink *dl) 499{ 500 int ccpok = ccp_SetOpenMode(&dl->physical->link.ccp); 501 502 if (dl->physical->link.lcp.want_mrru && dl->physical->link.lcp.his_mrru) { --- 214 unchanged lines hidden (view full) --- 717 peerid_Init(&dl->peer); 718 dl->parent = &bundle->fsm; 719 dl->fsmp.LayerStart = datalink_LayerStart; 720 dl->fsmp.LayerUp = datalink_LayerUp; 721 dl->fsmp.LayerDown = datalink_LayerDown; 722 dl->fsmp.LayerFinish = datalink_LayerFinish; 723 dl->fsmp.object = dl; 724 |
727 auth_Init(&dl->pap); 728 auth_Init(&dl->chap.auth); 729 | |
730 if ((dl->physical = modem_Create(dl, type)) == NULL) { 731 free(dl->name); 732 free(dl); 733 return NULL; 734 } | 725 if ((dl->physical = modem_Create(dl, type)) == NULL) { 726 free(dl->name); 727 free(dl); 728 return NULL; 729 } |
730 731 pap_Init(&dl->pap, dl->physical); 732 chap_Init(&dl->chap, dl->physical); |
|
735 cbcp_Init(&dl->cbcp, dl->physical); 736 chat_Init(&dl->chat, dl->physical, NULL, 1, NULL); 737 738 log_Printf(LogPHASE, "%s: Created in %s state\n", 739 dl->name, datalink_State(dl)); 740 741 return dl; 742} --- 26 unchanged lines hidden (view full) --- 769 memset(&dl->dial_timer, '\0', sizeof dl->dial_timer); 770 dl->dial_tries = 0; 771 dl->reconnect_tries = 0; 772 dl->name = strdup(name); 773 peerid_Init(&dl->peer); 774 dl->parent = odl->parent; 775 memcpy(&dl->fsmp, &odl->fsmp, sizeof dl->fsmp); 776 dl->fsmp.object = dl; | 733 cbcp_Init(&dl->cbcp, dl->physical); 734 chat_Init(&dl->chat, dl->physical, NULL, 1, NULL); 735 736 log_Printf(LogPHASE, "%s: Created in %s state\n", 737 dl->name, datalink_State(dl)); 738 739 return dl; 740} --- 26 unchanged lines hidden (view full) --- 767 memset(&dl->dial_timer, '\0', sizeof dl->dial_timer); 768 dl->dial_tries = 0; 769 dl->reconnect_tries = 0; 770 dl->name = strdup(name); 771 peerid_Init(&dl->peer); 772 dl->parent = odl->parent; 773 memcpy(&dl->fsmp, &odl->fsmp, sizeof dl->fsmp); 774 dl->fsmp.object = dl; |
777 auth_Init(&dl->pap); 778 dl->pap.cfg.fsmretry = odl->pap.cfg.fsmretry; | |
779 | 775 |
780 auth_Init(&dl->chap.auth); 781 dl->chap.auth.cfg.fsmretry = odl->chap.auth.cfg.fsmretry; 782 | |
783 if ((dl->physical = modem_Create(dl, PHYS_INTERACTIVE)) == NULL) { 784 free(dl->name); 785 free(dl); 786 return NULL; 787 } | 776 if ((dl->physical = modem_Create(dl, PHYS_INTERACTIVE)) == NULL) { 777 free(dl->name); 778 free(dl); 779 return NULL; 780 } |
781 pap_Init(&dl->pap, dl->physical); 782 dl->pap.cfg.fsmretry = odl->pap.cfg.fsmretry; 783 784 chap_Init(&dl->chap, dl->physical); 785 dl->chap.auth.cfg.fsmretry = odl->chap.auth.cfg.fsmretry; 786 |
|
788 memcpy(&dl->physical->cfg, &odl->physical->cfg, sizeof dl->physical->cfg); 789 memcpy(&dl->physical->link.lcp.cfg, &odl->physical->link.lcp.cfg, 790 sizeof dl->physical->link.lcp.cfg); 791 memcpy(&dl->physical->link.ccp.cfg, &odl->physical->link.ccp.cfg, 792 sizeof dl->physical->link.ccp.cfg); 793 memcpy(&dl->physical->async.cfg, &odl->physical->async.cfg, 794 sizeof dl->physical->async.cfg); 795 --- 379 unchanged lines hidden (view full) --- 1175 dl->reconnect_tries = 0; 1176 dl->parent = &bundle->fsm; 1177 dl->fsmp.LayerStart = datalink_LayerStart; 1178 dl->fsmp.LayerUp = datalink_LayerUp; 1179 dl->fsmp.LayerDown = datalink_LayerDown; 1180 dl->fsmp.LayerFinish = datalink_LayerFinish; 1181 dl->fsmp.object = dl; 1182 | 787 memcpy(&dl->physical->cfg, &odl->physical->cfg, sizeof dl->physical->cfg); 788 memcpy(&dl->physical->link.lcp.cfg, &odl->physical->link.lcp.cfg, 789 sizeof dl->physical->link.lcp.cfg); 790 memcpy(&dl->physical->link.ccp.cfg, &odl->physical->link.ccp.cfg, 791 sizeof dl->physical->link.ccp.cfg); 792 memcpy(&dl->physical->async.cfg, &odl->physical->async.cfg, 793 sizeof dl->physical->async.cfg); 794 --- 379 unchanged lines hidden (view full) --- 1174 dl->reconnect_tries = 0; 1175 dl->parent = &bundle->fsm; 1176 dl->fsmp.LayerStart = datalink_LayerStart; 1177 dl->fsmp.LayerUp = datalink_LayerUp; 1178 dl->fsmp.LayerDown = datalink_LayerDown; 1179 dl->fsmp.LayerFinish = datalink_LayerFinish; 1180 dl->fsmp.object = dl; 1181 |
1183 retry = dl->pap.cfg.fsmretry; 1184 auth_Init(&dl->pap); 1185 dl->pap.cfg.fsmretry = retry; 1186 1187 retry = dl->chap.auth.cfg.fsmretry; 1188 auth_Init(&dl->chap.auth); 1189 dl->chap.auth.cfg.fsmretry = retry; 1190 | |
1191 dl->physical = iov2modem(dl, iov, niov, maxiov, fd); 1192 1193 if (!dl->physical) { 1194 free(dl->name); 1195 free(dl); 1196 dl = NULL; 1197 } else { | 1182 dl->physical = iov2modem(dl, iov, niov, maxiov, fd); 1183 1184 if (!dl->physical) { 1185 free(dl->name); 1186 free(dl); 1187 dl = NULL; 1188 } else { |
1189 retry = dl->pap.cfg.fsmretry; 1190 pap_Init(&dl->pap, dl->physical); 1191 dl->pap.cfg.fsmretry = retry; 1192 1193 retry = dl->chap.auth.cfg.fsmretry; 1194 chap_Init(&dl->chap, dl->physical); 1195 dl->chap.auth.cfg.fsmretry = retry; 1196 |
|
1198 cbcp_Init(&dl->cbcp, dl->physical); 1199 chat_Init(&dl->chat, dl->physical, NULL, 1, NULL); 1200 1201 log_Printf(LogPHASE, "%s: Transferred in %s state\n", 1202 dl->name, datalink_State(dl)); 1203 } 1204 1205 return dl; --- 81 unchanged lines hidden --- | 1197 cbcp_Init(&dl->cbcp, dl->physical); 1198 chat_Init(&dl->chat, dl->physical, NULL, 1, NULL); 1199 1200 log_Printf(LogPHASE, "%s: Transferred in %s state\n", 1201 dl->name, datalink_State(dl)); 1202 } 1203 1204 return dl; --- 81 unchanged lines hidden --- |