diff options
author | brian <brian@FreeBSD.org> | 1997-08-25 00:29:32 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1997-08-25 00:29:32 +0000 |
commit | 1a67d257255b14fb46fc02630bf861a49bebd625 (patch) | |
tree | 5a0190bb42d398d91fc5bbdd17de31f54aec2459 | |
parent | bbf38e6e36ecd35771c55badcb09ca745a61d881 (diff) | |
download | FreeBSD-src-1a67d257255b14fb46fc02630bf861a49bebd625.zip FreeBSD-src-1a67d257255b14fb46fc02630bf861a49bebd625.tar.gz |
Make the code format more in line with style(9).
Update loadalias to use the new libalias api.
Update to version 1.1.
63 files changed, 3832 insertions, 4037 deletions
diff --git a/usr.sbin/ppp/alias_cmd.c b/usr.sbin/ppp/alias_cmd.c index f6aa1be..575a01c 100644 --- a/usr.sbin/ppp/alias_cmd.c +++ b/usr.sbin/ppp/alias_cmd.c @@ -15,198 +15,185 @@ #include "vars.h" static int -StrToAddr (char *, struct in_addr* addr); + StrToAddr(char *, struct in_addr * addr); static int -StrToPort (char *, u_short *port, char *proto); + StrToPort(char *, u_short * port, char *proto); static int -StrToAddrAndPort (char *, struct in_addr *addr, u_short *port, char *proto); + StrToAddrAndPort(char *, struct in_addr * addr, u_short * port, char *proto); int -AliasRedirectPort (struct cmdtab *list, - int argc, - char **argv, - void *param) +AliasRedirectPort(struct cmdtab * list, + int argc, + char **argv, + void *param) { - if (!(mode & MODE_ALIAS)) { - if (VarTerm) - fprintf(VarTerm, "Alias not enabled\n"); - } else if (argc == 3) { - char proto_constant; - char *proto; - u_short local_port; - u_short alias_port; - int error; - struct in_addr local_addr; - struct in_addr null_addr; - struct alias_link *link; - - proto = argv[0]; - if (strcmp(proto, "tcp") == 0) { - proto_constant = IPPROTO_TCP; - } else if (strcmp(proto, "udp") == 0) { - proto_constant = IPPROTO_UDP; - } else { - if (VarTerm) { - fprintf(VarTerm, "port redirect: protocol must be tcp or udp\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, - list->syntax); - } - return 1; - } - - error = StrToAddrAndPort(argv[1], &local_addr, &local_port, proto); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "port redirect: error reading local addr:port\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - return 1; - } - - error = StrToPort(argv[2], &alias_port, proto); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "port redirect: error reading alias port\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - return 1; - } - - null_addr.s_addr = 0; - - link = VarPacketAliasRedirectPort(local_addr, local_port, - null_addr, 0, - null_addr, alias_port, - proto_constant); - - if (link == NULL && VarTerm) - fprintf(VarTerm, "port redirect: error returned by packed" - " aliasing engine (code=%d)\n", error); - } else if (VarTerm) - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - - return 1; + if (!(mode & MODE_ALIAS)) { + if (VarTerm) + fprintf(VarTerm, "Alias not enabled\n"); + } else if (argc == 3) { + char proto_constant; + char *proto; + u_short local_port; + u_short alias_port; + int error; + struct in_addr local_addr; + struct in_addr null_addr; + struct alias_link *link; + + proto = argv[0]; + if (strcmp(proto, "tcp") == 0) { + proto_constant = IPPROTO_TCP; + } else if (strcmp(proto, "udp") == 0) { + proto_constant = IPPROTO_UDP; + } else { + if (VarTerm) { + fprintf(VarTerm, "port redirect: protocol must be tcp or udp\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, + list->syntax); + } + return 1; + } + + error = StrToAddrAndPort(argv[1], &local_addr, &local_port, proto); + if (error) { + if (VarTerm) { + fprintf(VarTerm, "port redirect: error reading local addr:port\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + return 1; + } + error = StrToPort(argv[2], &alias_port, proto); + if (error) { + if (VarTerm) { + fprintf(VarTerm, "port redirect: error reading alias port\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + return 1; + } + null_addr.s_addr = 0; + + link = VarPacketAliasRedirectPort(local_addr, local_port, + null_addr, 0, + null_addr, alias_port, + proto_constant); + + if (link == NULL && VarTerm) + fprintf(VarTerm, "port redirect: error returned by packed" + " aliasing engine (code=%d)\n", error); + } else if (VarTerm) + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + + return 1; } int -AliasRedirectAddr(struct cmdtab *list, - int argc, - char **argv, - void *param) +AliasRedirectAddr(struct cmdtab * list, + int argc, + char **argv, + void *param) { - if (!(mode & MODE_ALIAS)) { + if (!(mode & MODE_ALIAS)) { + if (VarTerm) + fprintf(VarTerm, "alias not enabled\n"); + } else if (argc == 2) { + int error; + struct in_addr local_addr; + struct in_addr alias_addr; + struct alias_link *link; + + error = StrToAddr(argv[0], &local_addr); + if (error) { if (VarTerm) - fprintf(VarTerm, "alias not enabled\n"); - } else if (argc == 2) { - int error; - struct in_addr local_addr; - struct in_addr alias_addr; - struct alias_link *link; - - error = StrToAddr(argv[0], &local_addr); - if (error) { - if (VarTerm) - fprintf(VarTerm, "address redirect: invalid local address\n"); - return 1; - } - - error = StrToAddr(argv[1], &alias_addr); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "address redirect: invalid alias address\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - return 1; - } - - link = VarPacketAliasRedirectAddr(local_addr, alias_addr); - if (link == NULL && VarTerm) { - fprintf(VarTerm, "address redirect: packet aliasing engine error\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - } else if (VarTerm) - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - - return 1; + fprintf(VarTerm, "address redirect: invalid local address\n"); + return 1; + } + error = StrToAddr(argv[1], &alias_addr); + if (error) { + if (VarTerm) { + fprintf(VarTerm, "address redirect: invalid alias address\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + return 1; + } + link = VarPacketAliasRedirectAddr(local_addr, alias_addr); + if (link == NULL && VarTerm) { + fprintf(VarTerm, "address redirect: packet aliasing engine error\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + } else if (VarTerm) + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + + return 1; } static int -StrToAddr (char* str, - struct in_addr* addr) +StrToAddr(char *str, + struct in_addr * addr) { - struct hostent* hp; - - if (inet_aton (str, addr)) - return 0; + struct hostent *hp; - hp = gethostbyname (str); - if (!hp) - { - LogPrintf(LogWARN, "StrToAddr: Unknown host %s.\n", str); - return -1; - } - - *addr = *((struct in_addr *) hp->h_addr); + if (inet_aton(str, addr)) return 0; + + hp = gethostbyname(str); + if (!hp) { + LogPrintf(LogWARN, "StrToAddr: Unknown host %s.\n", str); + return -1; + } + *addr = *((struct in_addr *) hp->h_addr); + return 0; } static int -StrToPort (char *str, - u_short *port, - char *proto) +StrToPort(char *str, + u_short * port, + char *proto) { - int iport; - struct servent* sp; - char* end; - - iport = strtol (str, &end, 10); - if (end != str) - { - *port = htons(iport); - return 0; - } - - sp = getservbyname (str, proto); - if (!sp) - { - LogPrintf(LogWARN, "StrToAddr: Unknown port or service %s/%s.\n", - str, proto); - return -1; - } + int iport; + struct servent *sp; + char *end; - *port = sp->s_port; + iport = strtol(str, &end, 10); + if (end != str) { + *port = htons(iport); return 0; + } + sp = getservbyname(str, proto); + if (!sp) { + LogPrintf(LogWARN, "StrToAddr: Unknown port or service %s/%s.\n", + str, proto); + return -1; + } + *port = sp->s_port; + return 0; } int -StrToAddrAndPort (char* str, - struct in_addr* addr, - u_short *port, - char *proto) +StrToAddrAndPort(char *str, + struct in_addr * addr, + u_short * port, + char *proto) { - char *ptr; - - ptr = strchr (str, ':'); - if (!ptr) - { - LogPrintf(LogWARN, "StrToAddrAndPort: %s is missing port number.\n", - str); - return -1; - } + char *ptr; - *ptr = '\0'; - ++ptr; + ptr = strchr(str, ':'); + if (!ptr) { + LogPrintf(LogWARN, "StrToAddrAndPort: %s is missing port number.\n", + str); + return -1; + } + *ptr = '\0'; + ++ptr; - if (StrToAddr (str, addr) != 0) - return -1; + if (StrToAddr(str, addr) != 0) + return -1; - return StrToPort (ptr, port, proto); + return StrToPort(ptr, port, proto); } - diff --git a/usr.sbin/ppp/alias_cmd.h b/usr.sbin/ppp/alias_cmd.h index 1063bb9..60ecdab 100644 --- a/usr.sbin/ppp/alias_cmd.h +++ b/usr.sbin/ppp/alias_cmd.h @@ -1,5 +1,5 @@ extern int -AliasRedirectPort (struct cmdtab *, int, char **, void *); + AliasRedirectPort(struct cmdtab *, int, char **, void *); extern int -AliasRedirectAddr (struct cmdtab *, int, char **, void *); + AliasRedirectAddr(struct cmdtab *, int, char **, void *); diff --git a/usr.sbin/ppp/arp.c b/usr.sbin/ppp/arp.c index 24f691c..ded4d98 100644 --- a/usr.sbin/ppp/arp.c +++ b/usr.sbin/ppp/arp.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: arp.c,v 1.11 1997/04/15 00:03:35 brian Exp $ + * $Id: arp.c,v 1.12 1997/06/09 03:27:11 brian Exp $ * */ @@ -75,156 +75,142 @@ static int get_ether_addr(int, u_long, struct sockaddr_dl *); * sifproxyarp - Make a proxy ARP entry for the peer. */ static struct { - struct rt_msghdr hdr; - struct sockaddr_inarp dst; - struct sockaddr_dl hwa; - char extra[128]; -} arpmsg; + struct rt_msghdr hdr; + struct sockaddr_inarp dst; + struct sockaddr_dl hwa; + char extra[128]; +} arpmsg; static int arpmsg_valid; int -sifproxyarp(unit, hisaddr) - int unit; - u_long hisaddr; +sifproxyarp(int unit, u_long hisaddr) { - int routes; - - /* - * Get the hardware address of an interface on the same subnet - * as our local address. - */ - memset(&arpmsg, 0, sizeof(arpmsg)); - if (!get_ether_addr(unit, hisaddr, &arpmsg.hwa)) { - LogPrintf(LogERROR, "Cannot determine ethernet address" - " for proxy ARP\n"); - return 0; - } - - if ((routes = socket(PF_ROUTE, SOCK_RAW, AF_INET)) < 0) { - LogPrintf(LogERROR, "sifproxyarp: opening routing socket: %s\n", - strerror(errno)); - return 0; - } - - arpmsg.hdr.rtm_type = RTM_ADD; - arpmsg.hdr.rtm_flags = RTF_ANNOUNCE | RTF_HOST | RTF_STATIC; - arpmsg.hdr.rtm_version = RTM_VERSION; - arpmsg.hdr.rtm_seq = ++rtm_seq; - arpmsg.hdr.rtm_addrs = RTA_DST | RTA_GATEWAY; - arpmsg.hdr.rtm_inits = RTV_EXPIRE; - arpmsg.dst.sin_len = sizeof(struct sockaddr_inarp); - arpmsg.dst.sin_family = AF_INET; - arpmsg.dst.sin_addr.s_addr = hisaddr; - arpmsg.dst.sin_other = SIN_PROXY; - - arpmsg.hdr.rtm_msglen = (char *) &arpmsg.hwa - (char *) &arpmsg - + arpmsg.hwa.sdl_len; - if (write(routes, &arpmsg, arpmsg.hdr.rtm_msglen) < 0) { - LogPrintf(LogERROR, "Add proxy arp entry: %s\n", strerror(errno)); - close(routes); - return 0; - } - + int routes; + + /* + * Get the hardware address of an interface on the same subnet as our local + * address. + */ + memset(&arpmsg, 0, sizeof(arpmsg)); + if (!get_ether_addr(unit, hisaddr, &arpmsg.hwa)) { + LogPrintf(LogERROR, "Cannot determine ethernet address" + " for proxy ARP\n"); + return 0; + } + if ((routes = socket(PF_ROUTE, SOCK_RAW, AF_INET)) < 0) { + LogPrintf(LogERROR, "sifproxyarp: opening routing socket: %s\n", + strerror(errno)); + return 0; + } + arpmsg.hdr.rtm_type = RTM_ADD; + arpmsg.hdr.rtm_flags = RTF_ANNOUNCE | RTF_HOST | RTF_STATIC; + arpmsg.hdr.rtm_version = RTM_VERSION; + arpmsg.hdr.rtm_seq = ++rtm_seq; + arpmsg.hdr.rtm_addrs = RTA_DST | RTA_GATEWAY; + arpmsg.hdr.rtm_inits = RTV_EXPIRE; + arpmsg.dst.sin_len = sizeof(struct sockaddr_inarp); + arpmsg.dst.sin_family = AF_INET; + arpmsg.dst.sin_addr.s_addr = hisaddr; + arpmsg.dst.sin_other = SIN_PROXY; + + arpmsg.hdr.rtm_msglen = (char *) &arpmsg.hwa - (char *) &arpmsg + + arpmsg.hwa.sdl_len; + if (write(routes, &arpmsg, arpmsg.hdr.rtm_msglen) < 0) { + LogPrintf(LogERROR, "Add proxy arp entry: %s\n", strerror(errno)); close(routes); - arpmsg_valid = 1; - return 1; + return 0; + } + close(routes); + arpmsg_valid = 1; + return 1; } /* * cifproxyarp - Delete the proxy ARP entry for the peer. */ int -cifproxyarp(unit, hisaddr) - int unit; - u_long hisaddr; +cifproxyarp(int unit, u_long hisaddr) { - int routes; + int routes; - if (!arpmsg_valid) - return 0; - arpmsg_valid = 0; - - arpmsg.hdr.rtm_type = RTM_DELETE; - arpmsg.hdr.rtm_seq = ++rtm_seq; - - if ((routes = socket(PF_ROUTE, SOCK_RAW, AF_INET)) < 0) { - LogPrintf(LogERROR, "sifproxyarp: opening routing socket: %s\n", - strerror(errno)); - return 0; - } + if (!arpmsg_valid) + return 0; + arpmsg_valid = 0; - if (write(routes, &arpmsg, arpmsg.hdr.rtm_msglen) < 0) { - LogPrintf(LogERROR, "Delete proxy arp entry: %s\n", strerror(errno)); - close(routes); - return 0; - } + arpmsg.hdr.rtm_type = RTM_DELETE; + arpmsg.hdr.rtm_seq = ++rtm_seq; + if ((routes = socket(PF_ROUTE, SOCK_RAW, AF_INET)) < 0) { + LogPrintf(LogERROR, "sifproxyarp: opening routing socket: %s\n", + strerror(errno)); + return 0; + } + if (write(routes, &arpmsg, arpmsg.hdr.rtm_msglen) < 0) { + LogPrintf(LogERROR, "Delete proxy arp entry: %s\n", strerror(errno)); close(routes); - return 1; + return 0; + } + close(routes); + return 1; } -#else /* RTM_VERSION */ +#else /* RTM_VERSION */ /* * sifproxyarp - Make a proxy ARP entry for the peer. */ int -sifproxyarp(unit, hisaddr) - int unit; - u_long hisaddr; +sifproxyarp(int unit, u_long hisaddr) { - struct arpreq arpreq; - struct { - struct sockaddr_dl sdl; - char space[128]; - } dls; - - BZERO(&arpreq, sizeof(arpreq)); - - /* - * Get the hardware address of an interface on the same subnet - * as our local address. - */ - if (!get_ether_addr(unit, hisaddr, &dls.sdl)) { - LogPrintf(LOG_PHASE_BIT, "Cannot determine ethernet address for proxy ARP\n"); - return 0; - } - - arpreq.arp_ha.sa_len = sizeof(struct sockaddr); - arpreq.arp_ha.sa_family = AF_UNSPEC; - BCOPY(LLADDR(&dls.sdl), arpreq.arp_ha.sa_data, dls.sdl.sdl_alen); - SET_SA_FAMILY(arpreq.arp_pa, AF_INET); - ((struct sockaddr_in *) &arpreq.arp_pa)->sin_addr.s_addr = hisaddr; - arpreq.arp_flags = ATF_PERM | ATF_PUBL; - if (ioctl(unit, SIOCSARP, (caddr_t)&arpreq) < 0) { - LogPrintf(LogERROR, "sifproxyarp: ioctl(SIOCSARP): \n"); - return 0; - } - - return 1; + struct arpreq arpreq; + struct { + struct sockaddr_dl sdl; + char space[128]; + } dls; + + BZERO(&arpreq, sizeof(arpreq)); + + /* + * Get the hardware address of an interface on the same subnet as our local + * address. + */ + if (!get_ether_addr(unit, hisaddr, &dls.sdl)) { + LogPrintf(LOG_PHASE_BIT, "Cannot determine ethernet address for proxy ARP\n"); + return 0; + } + arpreq.arp_ha.sa_len = sizeof(struct sockaddr); + arpreq.arp_ha.sa_family = AF_UNSPEC; + BCOPY(LLADDR(&dls.sdl), arpreq.arp_ha.sa_data, dls.sdl.sdl_alen); + SET_SA_FAMILY(arpreq.arp_pa, AF_INET); + ((struct sockaddr_in *) & arpreq.arp_pa)->sin_addr.s_addr = hisaddr; + arpreq.arp_flags = ATF_PERM | ATF_PUBL; + if (ioctl(unit, SIOCSARP, (caddr_t) & arpreq) < 0) { + LogPrintf(LogERROR, "sifproxyarp: ioctl(SIOCSARP): \n"); + return 0; + } + return 1; } /* * cifproxyarp - Delete the proxy ARP entry for the peer. */ int -cifproxyarp(unit, hisaddr) - int unit; - u_long hisaddr; +cifproxyarp(int unit, u_long hisaddr) { - struct arpreq arpreq; - - BZERO(&arpreq, sizeof(arpreq)); - SET_SA_FAMILY(arpreq.arp_pa, AF_INET); - ((struct sockaddr_in *) &arpreq.arp_pa)->sin_addr.s_addr = hisaddr; - if (ioctl(unit, SIOCDARP, (caddr_t)&arpreq) < 0) { - LogPrintf(LogERROR, "cifproxyarp: ioctl(SIOCDARP): \n"); - return 0; - } - return 1; + struct arpreq arpreq; + + BZERO(&arpreq, sizeof(arpreq)); + SET_SA_FAMILY(arpreq.arp_pa, AF_INET); + ((struct sockaddr_in *) & arpreq.arp_pa)->sin_addr.s_addr = hisaddr; + if (ioctl(unit, SIOCDARP, (caddr_t) & arpreq) < 0) { + LogPrintf(LogERROR, "cifproxyarp: ioctl(SIOCDARP): \n"); + return 0; + } + return 1; } -#endif /* RTM_VERSION */ + +#endif /* RTM_VERSION */ /* @@ -234,87 +220,86 @@ cifproxyarp(unit, hisaddr) #define MAX_IFS 32 int -get_ether_addr(s, ipaddr, hwaddr) - int s; - u_long ipaddr; - struct sockaddr_dl *hwaddr; +get_ether_addr(int s, u_long ipaddr, struct sockaddr_dl * hwaddr) { - struct ifreq *ifr, *ifend, *ifp; - u_long ina, mask; - struct sockaddr_dl *dla; - struct ifreq ifreq; - struct ifconf ifc; - struct ifreq ifs[MAX_IFS]; - - ifc.ifc_len = sizeof(ifs); - ifc.ifc_req = ifs; - if (ioctl(s, SIOCGIFCONF, &ifc) < 0) { - LogPrintf(LogERROR, "get_ether_addr: ioctl(SIOCGIFCONF): \n"); - return 0; - } + struct ifreq *ifr, *ifend, *ifp; + u_long ina, mask; + struct sockaddr_dl *dla; + struct ifreq ifreq; + struct ifconf ifc; + struct ifreq ifs[MAX_IFS]; + + ifc.ifc_len = sizeof(ifs); + ifc.ifc_req = ifs; + if (ioctl(s, SIOCGIFCONF, &ifc) < 0) { + LogPrintf(LogERROR, "get_ether_addr: ioctl(SIOCGIFCONF): \n"); + return 0; + } - /* - * Scan through looking for an interface with an Internet - * address on the same subnet as `ipaddr'. - */ - ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len); - for (ifr = ifc.ifc_req; ifr < ifend; ) { - if (ifr->ifr_addr.sa_family == AF_INET) { - ina = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr.s_addr; - strncpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name)); - ifreq.ifr_name[sizeof(ifreq.ifr_name)-1]='\0'; - /* - * Check that the interface is up, and not point-to-point - * or loopback. - */ - if (ioctl(s, SIOCGIFFLAGS, &ifreq) < 0) - continue; - if ((ifreq.ifr_flags & - (IFF_UP|IFF_BROADCAST|IFF_POINTOPOINT|IFF_LOOPBACK|IFF_NOARP)) - != (IFF_UP|IFF_BROADCAST)) - goto nextif; - /* - * Get its netmask and check that it's on the right subnet. - */ - if (ioctl(s, SIOCGIFNETMASK, &ifreq) < 0) - continue; - mask = ((struct sockaddr_in *) &ifreq.ifr_addr)->sin_addr.s_addr; - if ((ipaddr & mask) != (ina & mask)) - goto nextif; - - break; - } -nextif: - ifr = (struct ifreq *) ((char *)&ifr->ifr_addr + ifr->ifr_addr.sa_len); + /* + * Scan through looking for an interface with an Internet address on the + * same subnet as `ipaddr'. + */ + ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len); + for (ifr = ifc.ifc_req; ifr < ifend;) { + if (ifr->ifr_addr.sa_family == AF_INET) { + ina = ((struct sockaddr_in *) & ifr->ifr_addr)->sin_addr.s_addr; + strncpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name)); + ifreq.ifr_name[sizeof(ifreq.ifr_name) - 1] = '\0'; + + /* + * Check that the interface is up, and not point-to-point or loopback. + */ + if (ioctl(s, SIOCGIFFLAGS, &ifreq) < 0) + continue; + if ((ifreq.ifr_flags & + (IFF_UP | IFF_BROADCAST | IFF_POINTOPOINT | IFF_LOOPBACK | IFF_NOARP)) + != (IFF_UP | IFF_BROADCAST)) + goto nextif; + + /* + * Get its netmask and check that it's on the right subnet. + */ + if (ioctl(s, SIOCGIFNETMASK, &ifreq) < 0) + continue; + mask = ((struct sockaddr_in *) & ifreq.ifr_addr)->sin_addr.s_addr; + if ((ipaddr & mask) != (ina & mask)) + goto nextif; + + break; } +nextif: + ifr = (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len); + } - if (ifr >= ifend) - return 0; - LogPrintf(LogPHASE, "Found interface %s for proxy arp\n", ifr->ifr_name); - - /* - * Now scan through again looking for a link-level address - * for this interface. - */ - ifp = ifr; - for (ifr = ifc.ifc_req; ifr < ifend; ) { - if (strcmp(ifp->ifr_name, ifr->ifr_name) == 0 - && ifr->ifr_addr.sa_family == AF_LINK) { - /* - * Found the link-level address - copy it out - */ - dla = (struct sockaddr_dl *) &ifr->ifr_addr; + if (ifr >= ifend) + return 0; + LogPrintf(LogPHASE, "Found interface %s for proxy arp\n", ifr->ifr_name); + + /* + * Now scan through again looking for a link-level address for this + * interface. + */ + ifp = ifr; + for (ifr = ifc.ifc_req; ifr < ifend;) { + if (strcmp(ifp->ifr_name, ifr->ifr_name) == 0 + && ifr->ifr_addr.sa_family == AF_LINK) { + + /* + * Found the link-level address - copy it out + */ + dla = (struct sockaddr_dl *) & ifr->ifr_addr; #ifdef __bsdi__ - if (dla->sdl_alen == 0) - kmemgetether(ifr->ifr_name, dla); + if (dla->sdl_alen == 0) + kmemgetether(ifr->ifr_name, dla); #endif - BCOPY(dla, hwaddr, dla->sdl_len); - return 1; - } - ifr = (struct ifreq *) ((char *)&ifr->ifr_addr + ifr->ifr_addr.sa_len); + BCOPY(dla, hwaddr, dla->sdl_len); + return 1; } + ifr = (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len); + } - return 0; + return 0; } #ifdef __bsdi__ @@ -322,8 +307,8 @@ nextif: struct nlist nl[] = { #define N_IFNET 0 - { "_ifnet" }, - "", + {"_ifnet"}, + "", }; @@ -333,10 +318,7 @@ kvm_t *kvmd; * Read kernel memory, return 0 on success. */ int -kread(addr, buf, size) - u_long addr; - char *buf; - int size; +kread(u_long addr, char *buf, int size) { if (kvm_read(kvmd, addr, buf, size) != size) { /* XXX this duplicates kvm_read's error printout */ @@ -346,21 +328,20 @@ kread(addr, buf, size) return 0; } -kmemgetether(ifname, dlo) -char *ifname; -struct sockaddr_dl *dlo; +void +kmemgetether(char *ifname, struct sockaddr_dl * dlo) { struct ifnet ifnet; int n; u_long addr, ifaddraddr, ifnetfound, ifaddrfound; - char name[16+32]; + char name[16 + 32]; struct sockaddr *sa; char *cp; struct sockaddr_dl *sdl; union { - struct ifaddr ifa; - struct in_ifaddr in; - } ifaddr; + struct ifaddr ifa; + struct in_ifaddr in; + } ifaddr; struct arpcom ac; kvmd = kvm_open(NULL, NULL, NULL, O_RDONLY, NULL); @@ -368,62 +349,64 @@ struct sockaddr_dl *dlo; n = kvm_nlist(kvmd, nl); if (n >= 0) { addr = nl[N_IFNET].n_value; - kread(addr, (char *)&addr, sizeof(addr)); + kread(addr, (char *) &addr, sizeof(addr)); ifaddraddr = ifnetfound = 0; while (addr || ifaddraddr) { ifnetfound = addr; if (ifaddraddr == 0) { - if (kread(addr, (char *)&ifnet, sizeof(ifnet)) || - kread((u_long)ifnet.if_name, name, 16)) - return; + if (kread(addr, (char *) &ifnet, sizeof(ifnet)) || + kread((u_long) ifnet.if_name, name, 16)) + return; name[15] = 0; addr = (u_long) ifnet.if_next; - cp = (char *)index(name, '\0'); + cp = (char *) index(name, '\0'); cp += sprintf(cp, "%d", ifnet.if_unit); *cp = '\0'; - ifaddraddr = (u_long)ifnet.if_addrlist; + ifaddraddr = (u_long) ifnet.if_addrlist; } ifaddrfound = ifaddraddr; if (ifaddraddr) { - if (kread(ifaddraddr, (char *)&ifaddr, sizeof ifaddr)) { + if (kread(ifaddraddr, (char *) &ifaddr, sizeof ifaddr)) { ifaddraddr = 0; continue; } #define CP(x) ((char *)(x)) cp = (CP(ifaddr.ifa.ifa_addr) - CP(ifaddraddr)) + CP(&ifaddr); - sa = (struct sockaddr *)cp; + sa = (struct sockaddr *) cp; if (sa->sa_family == AF_LINK && strcmp(ifname, name) == 0) { - sdl = (struct sockaddr_dl *)sa; - cp = (char *)LLADDR(sdl); + sdl = (struct sockaddr_dl *) sa; + cp = (char *) LLADDR(sdl); n = sdl->sdl_alen; if (ifnet.if_type == IFT_ETHER) { - if (n == 0) { - kread(ifnetfound, (char *)&ac, sizeof(ac)); - cp = (char *)LLADDR(sdl); - bcopy((char *)ac.ac_enaddr, cp, 6); - sdl->sdl_alen = 6; - } - bcopy(sdl, dlo, sizeof(*sdl)); - return; + if (n == 0) { + kread(ifnetfound, (char *) &ac, sizeof(ac)); + cp = (char *) LLADDR(sdl); + bcopy((char *) ac.ac_enaddr, cp, 6); + sdl->sdl_alen = 6; + } + bcopy(sdl, dlo, sizeof(*sdl)); + return; } } - ifaddraddr = (u_long)ifaddr.ifa.ifa_next; + ifaddraddr = (u_long) ifaddr.ifa.ifa_next; } } } } } + #endif #ifdef DEBUG main() { - u_long ipaddr; - int s; + u_long ipaddr; + int s; - s = socket(AF_INET, SOCK_DGRAM, 0); - ipaddr = inet_addr("192.168.1.32"); - sifproxyarp(s, ipaddr); - close(s); + s = socket(AF_INET, SOCK_DGRAM, 0); + ipaddr = inet_addr("192.168.1.32"); + sifproxyarp(s, ipaddr); + close(s); } + #endif diff --git a/usr.sbin/ppp/arp.h b/usr.sbin/ppp/arp.h index b2e38e6..0186d35 100644 --- a/usr.sbin/ppp/arp.h +++ b/usr.sbin/ppp/arp.h @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: arp.h,v 1.3 1997/02/22 16:09:57 peter Exp $ + * $Id: arp.h,v 1.4 1997/06/09 03:27:12 brian Exp $ * */ @@ -25,4 +25,5 @@ #define _ARP_H_ extern int cifproxyarp(int, u_long); extern int sifproxyarp(int, u_long); + #endif diff --git a/usr.sbin/ppp/async.c b/usr.sbin/ppp/async.c index 3f8fcf2..3b414e9 100644 --- a/usr.sbin/ppp/async.c +++ b/usr.sbin/ppp/async.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: async.c,v 1.9 1997/06/09 03:27:12 brian Exp $ + * $Id: async.c,v 1.10 1997/06/23 23:08:23 brian Exp $ * */ #include "fsm.h" @@ -38,7 +38,7 @@ struct async_state { u_char xbuff[HDLCSIZE]; /* xmit buffer */ u_long my_accmap; u_long his_accmap; -} AsyncState; +} AsyncState; #define MODE_HUNT 0x01 #define MODE_ESC 0x02 @@ -54,8 +54,7 @@ AsyncInit() } void -SetLinkParams(lcp) -struct lcpstate *lcp; +SetLinkParams(struct lcpstate * lcp) { struct async_state *stp = &AsyncState; @@ -67,20 +66,17 @@ struct lcpstate *lcp; * Encode into async HDLC byte code if necessary */ static void -HdlcPutByte(cp, c, proto) -u_char **cp; -u_char c; -int proto; +HdlcPutByte(u_char ** cp, u_char c, int proto) { u_char *wp; wp = *cp; - if ((c < 0x20 && (proto == PROTO_LCP || (AsyncState.his_accmap & (1<<c)))) - || (c == HDLC_ESC) || (c == HDLC_SYN)) { + if ((c < 0x20 && (proto == PROTO_LCP || (AsyncState.his_accmap & (1 << c)))) + || (c == HDLC_ESC) || (c == HDLC_SYN)) { *wp++ = HDLC_ESC; c ^= HDLC_XOR; } - if (EscMap[32] && EscMap[c >> 3] & (1 << (c&7))) { + if (EscMap[32] && EscMap[c >> 3] & (1 << (c & 7))) { *wp++ = HDLC_ESC; c ^= HDLC_XOR; } @@ -89,10 +85,7 @@ int proto; } void -AsyncOutput(pri, bp, proto) -int pri; -struct mbuf *bp; -int proto; +AsyncOutput(int pri, struct mbuf * bp, int proto) { struct async_state *hs = &AsyncState; u_char *cp, *sp, *ep; @@ -106,7 +99,7 @@ int proto; cp = hs->xbuff; ep = cp + HDLCSIZE - 10; wp = bp; - *cp ++ = HDLC_SYN; + *cp++ = HDLC_SYN; while (wp) { sp = MBUF_CTOP(wp); for (cnt = wp->cnt; cnt > 0; cnt--) { @@ -118,33 +111,32 @@ int proto; } wp = wp->next; } - *cp ++ = HDLC_SYN; + *cp++ = HDLC_SYN; cnt = cp - hs->xbuff; LogDumpBuff(LogASYNC, "WriteModem", hs->xbuff, cnt); - WriteModem(pri, (char *)hs->xbuff, cnt); + WriteModem(pri, (char *) hs->xbuff, cnt); OsAddOutOctets(cnt); pfree(bp); } struct mbuf * -AsyncDecode(c) -u_char c; +AsyncDecode(u_char c) { struct async_state *hs = &AsyncState; struct mbuf *bp; if ((hs->mode & MODE_HUNT) && c != HDLC_SYN) - return(NULLBUFF); + return (NULLBUFF); switch (c) { case HDLC_SYN: hs->mode &= ~MODE_HUNT; - if (hs->length) { /* packet is ready. */ + if (hs->length) { /* packet is ready. */ bp = mballoc(hs->length, MB_ASYNC); mbwrite(bp, hs->hbuff, hs->length); hs->length = 0; - return(bp); + return (bp); } break; case HDLC_ESC: @@ -172,9 +164,7 @@ u_char c; } void -AsyncInput(buff, cnt) -u_char *buff; -int cnt; +AsyncInput(u_char * buff, int cnt) { struct mbuf *bp; @@ -188,7 +178,7 @@ int cnt; while (cnt > 0) { bp = AsyncDecode(*buff++); if (bp) - HdlcInput(bp); + HdlcInput(bp); cnt--; } } diff --git a/usr.sbin/ppp/auth.c b/usr.sbin/ppp/auth.c index 17b3424..38e29cc 100644 --- a/usr.sbin/ppp/auth.c +++ b/usr.sbin/ppp/auth.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: auth.c,v 1.13 1997/05/26 00:43:55 brian Exp $ + * $Id: auth.c,v 1.14 1997/06/09 03:27:13 brian Exp $ * * TODO: * o Implement check against with registered IP addresses. @@ -35,45 +35,46 @@ extern FILE *OpenSecret(); extern void CloseSecret(); LOCAL_AUTH_VALID -LocalAuthInit(void) +LocalAuthInit() { char *p; - if ( gethostname( VarShortHost, sizeof(VarShortHost))) { - return(NOT_FOUND); + if (gethostname(VarShortHost, sizeof(VarShortHost))) { + return (NOT_FOUND); } - p = strchr( VarShortHost, '.' ); - if (p) - *p = '\0'; + p = strchr(VarShortHost, '.'); + if (p) + *p = '\0'; VarLocalAuth = LOCAL_NO_AUTH; - return LocalAuthValidate( SECRETFILE, VarShortHost, "" ); + return LocalAuthValidate(SECRETFILE, VarShortHost, ""); } LOCAL_AUTH_VALID -LocalAuthValidate( char *fname, char *system, char *key) { +LocalAuthValidate(char *fname, char *system, char *key) +{ FILE *fp; int n; - char *vector[20]; /* XXX */ - char buff[200]; /* XXX */ + char *vector[20]; /* XXX */ + char buff[200]; /* XXX */ LOCAL_AUTH_VALID rc; rc = NOT_FOUND; /* No system entry */ fp = OpenSecret(fname); if (fp == NULL) - return( rc ); + return (rc); while (fgets(buff, sizeof(buff), fp)) { if (buff[0] == '#') continue; - buff[strlen(buff)-1] = 0; + buff[strlen(buff) - 1] = 0; bzero(vector, sizeof(vector)); n = MakeArgs(buff, vector, VECSIZE(vector)); if (n < 1) continue; if (strcmp(vector[0], system) == 0) { - if ( vector[1] != (char *) NULL && strcmp(vector[1], key) == 0) { + if (vector[1] != (char *) NULL && strcmp(vector[1], key) == 0) { rc = VALID; /* Valid */ } else { rc = INVALID; /* Invalid */ @@ -82,12 +83,11 @@ LocalAuthValidate( char *fname, char *system, char *key) { } } CloseSecret(fp); - return( rc ); + return (rc); } int -AuthValidate(fname, system, key) -char *fname, *system, *key; +AuthValidate(char *fname, char *system, char *key) { FILE *fp; int n; @@ -97,11 +97,11 @@ char *fname, *system, *key; fp = OpenSecret(fname); if (fp == NULL) - return(0); + return (0); while (fgets(buff, sizeof(buff), fp)) { if (buff[0] == '#') continue; - buff[strlen(buff)-1] = 0; + buff[strlen(buff) - 1] = 0; bzero(vector, sizeof(vector)); n = MakeArgs(buff, vector, VECSIZE(vector)); if (n < 2) @@ -110,29 +110,27 @@ char *fname, *system, *key; ExpandString(vector[1], passwd, sizeof(passwd), 0); if (strcmp(passwd, key) == 0) { CloseSecret(fp); - bzero(&DefHisAddress, sizeof(DefHisAddress)); - n -= 2; - if (n > 0) { + bzero(&DefHisAddress, sizeof(DefHisAddress)); + n -= 2; + if (n > 0) { if (ParseAddr(n--, &vector[2], - &DefHisAddress.ipaddr, - &DefHisAddress.mask, - &DefHisAddress.width) == 0) { - return(0); /* Invalid */ + &DefHisAddress.ipaddr, + &DefHisAddress.mask, + &DefHisAddress.width) == 0) { + return (0); /* Invalid */ } } IpcpInit(); - return(1); /* Valid */ + return (1); /* Valid */ } } } CloseSecret(fp); - return(0); /* Invalid */ + return (0); /* Invalid */ } char * -AuthGetSecret(fname, system, len, setaddr) -char *fname, *system; -int len, setaddr; +AuthGetSecret(char *fname, char *system, int len, int setaddr) { FILE *fp; int n; @@ -142,11 +140,11 @@ int len, setaddr; fp = OpenSecret(fname); if (fp == NULL) - return(NULL); + return (NULL); while (fgets(buff, sizeof(buff), fp)) { if (buff[0] == '#') continue; - buff[strlen(buff)-1] = 0; + buff[strlen(buff) - 1] = 0; bzero(vector, sizeof(vector)); n = MakeArgs(buff, vector, VECSIZE(vector)); if (n < 2) @@ -154,7 +152,7 @@ int len, setaddr; if (strlen(vector[0]) == len && strncmp(vector[0], system, len) == 0) { ExpandString(vector[1], passwd, sizeof(passwd), 0); if (setaddr) { - bzero(&DefHisAddress, sizeof(DefHisAddress)); + bzero(&DefHisAddress, sizeof(DefHisAddress)); } n -= 2; if (n > 0 && setaddr) { @@ -163,18 +161,17 @@ int len, setaddr; &DefHisAddress.ipaddr, &DefHisAddress.mask, &DefHisAddress.width) != 0) - IpcpInit(); + IpcpInit(); } - return(passwd); + return (passwd); } } CloseSecret(fp); - return(NULL); /* Invalid */ + return (NULL); /* Invalid */ } static void -AuthTimeout(authp) -struct authinfo *authp; +AuthTimeout(struct authinfo * authp) { struct pppTimer *tp; @@ -182,13 +179,12 @@ struct authinfo *authp; StopTimer(tp); if (--authp->retry > 0) { StartTimer(tp); - (authp->ChallengeFunc)(++authp->id); + (authp->ChallengeFunc) (++authp->id); } } void -StartAuthChallenge(authp) -struct authinfo *authp; +StartAuthChallenge(struct authinfo * authp) { struct pppTimer *tp; @@ -197,16 +193,15 @@ struct authinfo *authp; tp->func = AuthTimeout; tp->load = VarRetryTimeout * SECTICKS; tp->state = TIMER_STOPPED; - tp->arg = (void *)authp; + tp->arg = (void *) authp; StartTimer(tp); authp->retry = 3; authp->id = 1; - (authp->ChallengeFunc)(authp->id); + (authp->ChallengeFunc) (authp->id); } void -StopAuthTimer(authp) -struct authinfo *authp; +StopAuthTimer(struct authinfo * authp) { StopTimer(&authp->authtimer); } diff --git a/usr.sbin/ppp/auth.h b/usr.sbin/ppp/auth.h index 4ca72ae..635ff54 100644 --- a/usr.sbin/ppp/auth.h +++ b/usr.sbin/ppp/auth.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: auth.h,v 1.5 1997/02/22 16:10:02 peter Exp $ + * $Id: auth.h,v 1.6 1997/06/09 03:27:13 brian Exp $ * * TODO: */ @@ -23,11 +23,13 @@ #ifndef _AUTH_H_ #define _AUTH_H_ -typedef enum { VALID, INVALID, NOT_FOUND } LOCAL_AUTH_VALID; -LOCAL_AUTH_VALID LocalAuthValidate( char *, char *, char *); +typedef enum { + VALID, INVALID, NOT_FOUND +} LOCAL_AUTH_VALID; +LOCAL_AUTH_VALID LocalAuthValidate(char *, char *, char *); struct authinfo { - void (*ChallengeFunc)(); + void (*ChallengeFunc) (); struct pppTimer authtimer; int retry; int id; @@ -41,4 +43,5 @@ extern void StopAuthTimer(struct authinfo *); extern void StartAuthChallenge(struct authinfo *); extern LOCAL_AUTH_VALID LocalAuthInit(void); extern int AuthValidate(char *, char *, char *); + #endif diff --git a/usr.sbin/ppp/ccp.c b/usr.sbin/ppp/ccp.c index 0bd6ea7..d42e9bf 100644 --- a/usr.sbin/ppp/ccp.c +++ b/usr.sbin/ppp/ccp.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ccp.c,v 1.13 1997/06/09 03:27:14 brian Exp $ + * $Id: ccp.c,v 1.14 1997/08/20 23:47:40 brian Exp $ * * TODO: * o Support other compression protocols @@ -34,9 +34,9 @@ struct ccpstate CcpInfo; static void CcpSendConfigReq(struct fsm *); -static void CcpSendTerminateReq(struct fsm *fp); -static void CcpSendTerminateAck(struct fsm *fp); -static void CcpDecodeConfig(u_char *cp, int flen, int mode); +static void CcpSendTerminateReq(struct fsm * fp); +static void CcpSendTerminateAck(struct fsm * fp); +static void CcpDecodeConfig(u_char * cp, int flen, int mode); static void CcpLayerStart(struct fsm *); static void CcpLayerFinish(struct fsm *); static void CcpLayerUp(struct fsm *); @@ -53,8 +53,8 @@ struct fsm CcpFsm = { ST_INITIAL, 0, 0, 0, 0, - { 0, 0, 0, NULL, NULL, NULL }, - { 0, 0, 0, NULL, NULL, NULL }, + {0, 0, 0, NULL, NULL, NULL}, + {0, 0, 0, NULL, NULL, NULL}, LogCCP, CcpLayerUp, @@ -69,12 +69,12 @@ struct fsm CcpFsm = { }; static char const *cftypes[] = { -/* 0 */ "OUI", "PRED1", "PRED2", "PUDDLE", -/* 4 */ "???", "???", "???", "???", -/* 8 */ "???", "???", "???", "???", -/* 12 */ "???", "???", "???", "???", -/* 16 */ "HWPPC", "STAC", "MSPPC", "GAND", -/* 20 */ "V42BIS", "BSD", + /* 0 */ "OUI", "PRED1", "PRED2", "PUDDLE", + /* 4 */ "???", "???", "???", "???", + /* 8 */ "???", "???", "???", "???", + /* 12 */ "???", "???", "???", "???", + /* 16 */ "HWPPC", "STAC", "MSPPC", "GAND", + /* 20 */ "V42BIS", "BSD", }; int @@ -106,16 +106,14 @@ CcpInit() } static void -CcpInitRestartCounter(fp) -struct fsm *fp; +CcpInitRestartCounter(struct fsm * fp) { fp->FsmTimer.load = VarRetryTimeout * SECTICKS; fp->restart = 5; } static void -CcpSendConfigReq(fp) -struct fsm *fp; +CcpSendConfigReq(struct fsm * fp) { u_char *cp; struct ccpstate *icp = &CcpInfo; @@ -123,59 +121,53 @@ struct fsm *fp; cp = ReqBuff; LogPrintf(LogCCP, "CcpSendConfigReq\n"); if (icp->want_proto && !REJECTED(icp, TY_PRED1)) { - *cp++ = TY_PRED1; *cp++ = 2; + *cp++ = TY_PRED1; + *cp++ = 2; } FsmOutput(fp, CODE_CONFIGREQ, fp->reqid++, ReqBuff, cp - ReqBuff); } void -CcpSendResetReq(fp) -struct fsm *fp; +CcpSendResetReq(struct fsm * fp) { - Pred1Init(1); /* Initialize Input part */ + Pred1Init(1); /* Initialize Input part */ LogPrintf(LogCCP, "CcpSendResetReq\n"); FsmOutput(fp, CODE_RESETREQ, fp->reqid, NULL, 0); } static void -CcpSendTerminateReq(fp) -struct fsm *fp; +CcpSendTerminateReq(struct fsm * fp) { /* XXX: No code yet */ } static void -CcpSendTerminateAck(fp) -struct fsm *fp; +CcpSendTerminateAck(struct fsm * fp) { LogPrintf(LogCCP, "CcpSendTerminateAck\n"); FsmOutput(fp, CODE_TERMACK, fp->reqid++, NULL, 0); } void -CcpRecvResetReq(fp) -struct fsm *fp; +CcpRecvResetReq(struct fsm * fp) { - Pred1Init(2); /* Initialize Output part */ + Pred1Init(2); /* Initialize Output part */ } static void -CcpLayerStart(fp) -struct fsm *fp; +CcpLayerStart(struct fsm * fp) { LogPrintf(LogCCP, "CcpLayerStart.\n"); } static void -CcpLayerFinish(fp) -struct fsm *fp; +CcpLayerFinish(struct fsm * fp) { LogPrintf(LogCCP, "CcpLayerFinish.\n"); } static void -CcpLayerDown(fp) -struct fsm *fp; +CcpLayerDown(struct fsm * fp) { LogPrintf(LogCCP, "CcpLayerDown.\n"); } @@ -184,13 +176,12 @@ struct fsm *fp; * Called when CCP has reached to OPEN state */ static void -CcpLayerUp(fp) -struct fsm *fp; +CcpLayerUp(struct fsm * fp) { LogPrintf(LogCCP, "CcpLayerUp(%d).\n", fp->state); LogPrintf(LogCCP, "myproto = %d, hisproto = %d\n", - CcpInfo.want_proto, CcpInfo.his_proto); - Pred1Init(3); /* Initialize Input and Output */ + CcpInfo.want_proto, CcpInfo.his_proto); + Pred1Init(3); /* Initialize Input and Output */ } void @@ -208,10 +199,7 @@ CcpOpen() } static void -CcpDecodeConfig(cp, plen, mode) -u_char *cp; -int plen; -int mode; +CcpDecodeConfig(u_char * cp, int plen, int mode) { int type, length; char tbuff[100]; @@ -265,7 +253,7 @@ int mode; } void -CcpInput(struct mbuf *bp) +CcpInput(struct mbuf * bp) { if (phase == PHASE_NETWORK) FsmInput(&CcpFsm, bp); diff --git a/usr.sbin/ppp/ccp.h b/usr.sbin/ppp/ccp.h index acb2a1b..5f87650 100644 --- a/usr.sbin/ppp/ccp.h +++ b/usr.sbin/ppp/ccp.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ccp.h,v 1.5 1997/02/22 16:10:03 peter Exp $ + * $Id: ccp.h,v 1.6 1997/06/09 03:27:14 brian Exp $ * * TODO: */ @@ -37,14 +37,14 @@ #define TY_BSD 21 /* BSD LZW Compress */ struct ccpstate { - u_long his_proto; /* peer's compression protocol */ - u_long want_proto; /* my compression protocol */ + u_long his_proto; /* peer's compression protocol */ + u_long want_proto; /* my compression protocol */ - u_long his_reject; /* Request codes rejected by peer */ - u_long my_reject; /* Request codes I have rejected */ + u_long his_reject; /* Request codes rejected by peer */ + u_long my_reject; /* Request codes I have rejected */ - u_long orgout, compout; - u_long orgin, compin; + u_long orgout, compout; + u_long orgin, compin; }; extern struct ccpstate CcpInfo; @@ -55,4 +55,5 @@ void CcpInput(struct mbuf *); void CcpUp(void); void CcpOpen(void); void CcpInit(void); + #endif diff --git a/usr.sbin/ppp/chap.c b/usr.sbin/ppp/chap.c index 681d95e..862d711 100644 --- a/usr.sbin/ppp/chap.c +++ b/usr.sbin/ppp/chap.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: chap.c,v 1.18 1997/06/09 03:27:15 brian Exp $ + * $Id: chap.c,v 1.19 1997/06/14 00:21:23 ache Exp $ * * TODO: */ @@ -37,7 +37,7 @@ static char *chapcodes[] = { "???", "CHALLENGE", "RESPONSE", "SUCCESS", "FAILURE" }; -struct authinfo AuthChapInfo = { +struct authinfo AuthChapInfo = { SendChapChallenge, }; @@ -45,16 +45,13 @@ extern char *AuthGetSecret(); extern int randinit; void -ChapOutput(code, id, ptr, count) -u_int code, id; -u_char *ptr; -int count; +ChapOutput(u_int code, u_int id, u_char * ptr, int count) { int plen; struct fsmheader lh; struct mbuf *bp; - plen = sizeof(struct fsmheader) + count; + plen = sizeof(struct fsmheader) + count; lh.code = code; lh.id = id; lh.length = htons(plen); @@ -69,11 +66,10 @@ int count; static char challenge_data[80]; -static int challenge_len; +static int challenge_len; void -SendChapChallenge(chapid) -int chapid; +SendChapChallenge(int chapid) { int len, i; char *cp; @@ -82,7 +78,6 @@ int chapid; randinit = 1; srandomdev(); } - cp = challenge_data; *cp++ = challenge_len = random() % 32 + 16; for (i = 0; i < challenge_len; i++) @@ -94,22 +89,20 @@ int chapid; } void -RecvChapTalk(chp, bp) -struct fsmheader *chp; -struct mbuf *bp; +RecvChapTalk(struct fsmheader * chp, struct mbuf * bp) { int valsize, len; int arglen, keylen, namelen; char *cp, *argp, *ap, *name, *digest; char *keyp; - MD5_CTX context; /* context */ + MD5_CTX context; /* context */ char answer[100]; char cdigest[16]; len = ntohs(chp->length); LogPrintf(LogDEBUG, "RecvChapTalk: length: %d\n", len); arglen = len - sizeof(struct fsmheader); - cp = (char *)MBUF_CTOP(bp); + cp = (char *) MBUF_CTOP(bp); valsize = *cp++ & 255; name = cp + valsize; namelen = arglen - valsize - 1; @@ -157,6 +150,7 @@ struct mbuf *bp; break; case CHAP_RESPONSE: if (keyp) { + /* * Compute correct digest value */ @@ -167,10 +161,11 @@ struct mbuf *bp; ap += keylen; MD5Init(&context); MD5Update(&context, answer, ap - answer); - MD5Update(&context, challenge_data+1, challenge_len); + MD5Update(&context, challenge_data + 1, challenge_len); MD5Final(cdigest, &context); LogDumpBuff(LogDEBUG, "got", cp, 16); LogDumpBuff(LogDEBUG, "expect", cdigest, 16); + /* * Compare with the response */ @@ -180,6 +175,7 @@ struct mbuf *bp; break; } } + /* * Peer is not registerd, or response digest is wrong. */ @@ -191,9 +187,7 @@ struct mbuf *bp; } void -RecvChapResult(chp, bp) -struct fsmheader *chp; -struct mbuf *bp; +RecvChapResult(struct fsmheader * chp, struct mbuf * bp) { int len; struct lcpstate *lcp = &LcpInfo; @@ -207,6 +201,7 @@ struct mbuf *bp; NewPhase(PHASE_NETWORK); } } else { + /* * Maybe, we shoud close LCP. Of cause, peer may take close action, too. */ @@ -215,13 +210,13 @@ struct mbuf *bp; } void -ChapInput(struct mbuf *bp) +ChapInput(struct mbuf * bp) { int len = plength(bp); struct fsmheader *chp; if (len >= sizeof(struct fsmheader)) { - chp = (struct fsmheader *)MBUF_CTOP(bp); + chp = (struct fsmheader *) MBUF_CTOP(bp); if (len >= ntohs(chp->length)) { if (chp->code < 1 || chp->code > 4) chp->code = 0; diff --git a/usr.sbin/ppp/chat.c b/usr.sbin/ppp/chat.c index 65f377e..168ac6a 100644 --- a/usr.sbin/ppp/chat.c +++ b/usr.sbin/ppp/chat.c @@ -18,7 +18,7 @@ * Columbus, OH 43221 * (614)451-1883 * - * $Id: chat.c,v 1.30 1997/08/17 20:38:43 brian Exp $ + * $Id: chat.c,v 1.31 1997/08/17 22:47:07 brian Exp $ * * TODO: * o Support more UUCP compatible control sequences. @@ -54,7 +54,7 @@ static int TimeoutSec; static int abort_next, timeout_next; static int numaborts; char *AbortStrings[50]; -char inbuff[IBSIZE*2+1]; +char inbuff[IBSIZE * 2 + 1]; extern int ChangeParity(char *); @@ -72,13 +72,13 @@ findblank(char *p, int instring) if (!*p) break; } else if (*p == '"') - return(p); + return (p); p++; } } else { while (*p) { if (isblank(*p)) - return(p); + return (p); p++; } } @@ -100,10 +100,11 @@ MakeArgs(char *script, char **pvect, int maxargs) instring = 1; script++; if (*script == '\0') - break; /* Shouldn't return here. Need to null terminate below */ + break; /* Shouldn't return here. Need to null + * terminate below */ } else instring = 0; - if (nargs >= maxargs-1) + if (nargs >= maxargs - 1) break; *pvect++ = script; nargs++; @@ -147,19 +148,29 @@ ExpandString(char *str, char *result, int reslen, int sendmode) addcr = 0; break; case 'd': /* Delay 2 seconds */ - sleep(2); break; + sleep(2); + break; case 'p': - usleep(250000); break; /* Pause 0.25 sec */ + usleep(250000); + break; /* Pause 0.25 sec */ case 'n': - *result++ = '\n'; reslen--; break; + *result++ = '\n'; + reslen--; + break; case 'r': - *result++ = '\r'; reslen--; break; + *result++ = '\r'; + reslen--; + break; case 's': - *result++ = ' '; reslen--; break; + *result++ = ' '; + reslen--; + break; case 't': - *result++ = '\t'; reslen--; break; + *result++ = '\t'; + reslen--; + break; case 'P': - strncpy(result, VarAuthKey, reslen); + strncpy(result, VarAuthKey, reslen); reslen -= strlen(result); result += strlen(result); break; @@ -186,11 +197,11 @@ ExpandString(char *str, char *result, int reslen, int sendmode) break; default: reslen--; - *result++ = *str; + *result++ = *str; break; } - if (*str) - str++; + if (*str) + str++; break; case '^': str++; @@ -211,42 +222,47 @@ ExpandString(char *str, char *result, int reslen, int sendmode) } if (--reslen > 0) *result++ = '\0'; - return(result); + return (result); } #define MAXLOGBUFF 200 static char logbuff[MAXLOGBUFF]; static int loglen = 0; -static void clear_log() +static void +clear_log() { - memset(logbuff,0,MAXLOGBUFF); + memset(logbuff, 0, MAXLOGBUFF); loglen = 0; } -static void flush_log() +static void +flush_log() { if (LogIsKept(LogCONNECT)) - LogPrintf(LogCONNECT,"%s", logbuff); - else if (LogIsKept(LogCARRIER) && strstr(logbuff,"CARRIER")) - LogPrintf(LogCARRIER,"%s", logbuff); + LogPrintf(LogCONNECT, "%s", logbuff); + else if (LogIsKept(LogCARRIER) && strstr(logbuff, "CARRIER")) + LogPrintf(LogCARRIER, "%s", logbuff); clear_log(); } -static void connect_log(char *str, int single_p) +static void +connect_log(char *str, int single_p) { int space = MAXLOGBUFF - loglen - 1; - + while (space--) { if (*str == '\n') { flush_log(); } else { logbuff[loglen++] = *str; } - if (single_p || !*++str) break; + if (single_p || !*++str) + break; } - if (!space) flush_log(); + if (!space) + flush_log(); } int @@ -262,6 +278,7 @@ WaitforString(char *estr) #ifdef SIGALRM int omask; + omask = sigblock(sigmask(SIGALRM)); #endif clear_log(); @@ -270,19 +287,19 @@ WaitforString(char *estr) str = buff; inp = inbuff; - if (strlen(str)>=IBSIZE){ - str[IBSIZE-1]=0; + if (strlen(str) >= IBSIZE) { + str[IBSIZE - 1] = 0; LogPrintf(LogCHAT, "Truncating String to %d character: %s", IBSIZE, str); } - nfds = modem + 1; s = str; for (;;) { FD_ZERO(&rfds); FD_SET(modem, &rfds); + /* - * Because it is not clear whether select() modifies timeout value, - * it is better to initialize timeout values everytime. + * Because it is not clear whether select() modifies timeout value, it is + * better to initialize timeout values everytime. */ timeout.tv_sec = TimeoutSec; timeout.tv_usec = 0; @@ -298,8 +315,8 @@ WaitforString(char *estr) #endif LogPrintf(LogERROR, "select: %s", strerror(errno)); *inp = 0; - return(NOMATCH); - } else if (i == 0) { /* Timeout reached! */ + return (NOMATCH); + } else if (i == 0) { /* Timeout reached! */ *inp = 0; if (inp != inbuff) LogPrintf(LogCHAT, "Got: %s", inbuff); @@ -307,54 +324,56 @@ WaitforString(char *estr) #ifdef SIGALRM sigsetmask(omask); #endif - return(NOMATCH); + return (NOMATCH); } if (FD_ISSET(modem, &rfds)) { /* got something */ if (DEV_IS_SYNC) { int length; - if ((length=strlen(inbuff))>IBSIZE){ - bcopy(&(inbuff[IBSIZE]),inbuff,IBSIZE+1); /* shuffle down next part*/ - length=strlen(inbuff); + + if ((length = strlen(inbuff)) > IBSIZE) { + bcopy(&(inbuff[IBSIZE]), inbuff, IBSIZE + 1); /* shuffle down next + * part */ + length = strlen(inbuff); } nb = read(modem, &(inbuff[length]), IBSIZE); inbuff[nb + length] = 0; - connect_log(inbuff,0); + connect_log(inbuff, 0); if (strstr(inbuff, str)) { #ifdef SIGALRM - sigsetmask(omask); + sigsetmask(omask); #endif flush_log(); - return(MATCH); + return (MATCH); } for (i = 0; i < numaborts; i++) { if (strstr(inbuff, AbortStrings[i])) { LogPrintf(LogCHAT, "Abort: %s", AbortStrings[i]); #ifdef SIGALRM - sigsetmask(omask); + sigsetmask(omask); #endif flush_log(); - return(ABORT); + return (ABORT); } } } else { - if (read(modem, &ch, 1) < 0) { - LogPrintf(LogERROR, "read error: %s", strerror(errno)); - *inp = '\0'; - return(NOMATCH); + if (read(modem, &ch, 1) < 0) { + LogPrintf(LogERROR, "read error: %s", strerror(errno)); + *inp = '\0'; + return (NOMATCH); } - connect_log(&ch,1); - *inp++ = ch; - if (ch == *s) { + connect_log(&ch, 1); + *inp++ = ch; + if (ch == *s) { s++; if (*s == '\0') { #ifdef SIGALRM - sigsetmask(omask); + sigsetmask(omask); #endif *inp = 0; flush_log(); - return(MATCH); + return (MATCH); } - } else + } else s = str; if (inp == inbuff + IBSIZE) { bcopy(inp - 100, inbuff, 100); @@ -371,13 +390,13 @@ WaitforString(char *estr) LogPrintf(LogCHAT, "Abort: %s", s1); *inp = 0; #ifdef SIGALRM - sigsetmask(omask); + sigsetmask(omask); #endif flush_log(); - return(ABORT); + return (ABORT); } } - } + } } } } @@ -412,7 +431,6 @@ ExecStr(char *command, char *out) LogPrintf(LogCHAT, "Unable to create pipe in ExecStr: %s", strerror(errno)); return; } - pid = fork(); if (pid == 0) { TermTimerService(); @@ -478,15 +496,15 @@ SendString(char *str) TimeoutSec = 30; } else { if (*str == '!') { - (void) ExpandString(str+1, buff+2, sizeof(buff)-2, 0); + (void) ExpandString(str + 1, buff + 2, sizeof(buff) - 2, 0); ExecStr(buff + 2, buff + 2); } else { - (void) ExpandString(str, buff+2, sizeof(buff)-2, 1); + (void) ExpandString(str, buff + 2, sizeof(buff) - 2, 1); } - if (strstr(str, "\\P")) { /* Do not log the password itself. */ + if (strstr(str, "\\P")) { /* Do not log the password itself. */ LogPrintf(LogCHAT, "sending: %s", str); } else { - LogPrintf(LogCHAT, "sending: %s", buff+2); + LogPrintf(LogCHAT, "sending: %s", buff + 2); } cp = buff; if (DEV_IS_SYNC) @@ -506,16 +524,17 @@ ExpectString(char *str) if (strcmp(str, "ABORT") == 0) { ++abort_next; - return(MATCH); + return (MATCH); } if (strcmp(str, "TIMEOUT") == 0) { ++timeout_next; - return(MATCH); + return (MATCH); } LogPrintf(LogCHAT, "Expecting %s", str); while (*str) { + /* - * Check whether if string contains sub-send-expect. + * Check whether if string contains sub-send-expect. */ for (minus = str; *minus; minus++) { if (*minus == '-') { @@ -523,11 +542,12 @@ ExpectString(char *str) break; } } - if (*minus == '-') { /* We have sub-send-expect. */ + if (*minus == '-') { /* We have sub-send-expect. */ *minus++ = '\0'; state = WaitforString(str); if (state != NOMATCH) - return(state); + return (state); + /* * Can't get expect string. Sendout send part. */ @@ -544,26 +564,27 @@ ExpectString(char *str) str = minus; } else { SendString(str); - return(MATCH); + return (MATCH); } } else { + /* - * Simple case. Wait for string. + * Simple case. Wait for string. */ - return(WaitforString(str)); + return (WaitforString(str)); } } - return(MATCH); + return (MATCH); } static jmp_buf ChatEnv; -static void (*oint)(int); +static void (*oint) (int); static void StopDial(int sig) { LogPrintf(LogPHASE, "DoChat: Caught signal %d, abort connect\n", sig); - longjmp(ChatEnv,1); + longjmp(ChatEnv, 1); } int @@ -579,7 +600,7 @@ DoChat(char *script) /* While we're chatting, we want an INT to fail us */ if (setjmp(ChatEnv)) { signal(SIGINT, oint); - return(-1); + return (-1); } oint = signal(SIGINT, StopDial); @@ -613,9 +634,9 @@ DoChat(char *script) #endif case NOMATCH: signal(SIGINT, oint); - return(NOMATCH); + return (NOMATCH); } } signal(SIGINT, oint); - return(MATCH); + return (MATCH); } diff --git a/usr.sbin/ppp/chat.h b/usr.sbin/ppp/chat.h index cdb032f..af311b0 100644 --- a/usr.sbin/ppp/chat.h +++ b/usr.sbin/ppp/chat.h @@ -18,12 +18,13 @@ * Columbus, OH 43221 * (614)451-1883 * - * $Id: chat.h,v 1.5 1997/05/07 23:01:24 brian Exp $ + * $Id: chat.h,v 1.6 1997/06/09 03:27:16 brian Exp $ * */ #ifndef _CHAT_H_ #define _CHAT_H_ -extern char * ExpandString(char *, char *, int, int); +extern char *ExpandString(char *, char *, int, int); extern int MakeArgs(char *, char **, int); + #define VECSIZE(v) (sizeof(v) / sizeof(v[0])) #endif diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c index 8897127..ba06fa0 100644 --- a/usr.sbin/ppp/command.c +++ b/usr.sbin/ppp/command.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: command.c,v 1.73 1997/08/21 16:21:28 brian Exp $ + * $Id: command.c,v 1.74 1997/08/21 17:07:30 brian Exp $ * */ #include <sys/types.h> @@ -53,14 +53,14 @@ #include "server.h" extern void Cleanup(), TtyTermMode(), PacketMode(); -extern int EnableCommand(), DisableCommand(), DisplayCommand(); -extern int AcceptCommand(), DenyCommand(); -static int AliasCommand(); -extern int LocalAuthCommand(); -extern int LoadCommand(), SaveCommand(); -extern int ChangeParity(char *); -extern int SelectSystem(); -extern int ShowRoute(); +extern int EnableCommand(), DisableCommand(), DisplayCommand(); +extern int AcceptCommand(), DenyCommand(); +static int AliasCommand(); +extern int LocalAuthCommand(); +extern int LoadCommand(), SaveCommand(); +extern int ChangeParity(char *); +extern int SelectSystem(); +extern int ShowRoute(); extern void TtyOldMode(), TtyCommandMode(); extern struct pppvars pppVars; extern struct cmdtab const SetCommands[]; @@ -70,21 +70,26 @@ extern char *IfDevName; struct in_addr ifnetmask; int randinit; -static int ShowCommand(), TerminalCommand(), QuitCommand(); -static int CloseCommand(), DialCommand(), DownCommand(); -static int SetCommand(), AddCommand(), DeleteCommand(); -static int BgShellCommand(struct cmdtab *, int, char **); -static int FgShellCommand(struct cmdtab *, int, char **); -static int ShellCommand(struct cmdtab *, int, char **, int); +static int ShowCommand(struct cmdtab const *, int, char **); +static int TerminalCommand(struct cmdtab const *, int, char **); +static int QuitCommand(struct cmdtab const *, int, char **); +static int CloseCommand(struct cmdtab const *, int, char **); +static int DialCommand(struct cmdtab const *, int, char **); +static int DownCommand(struct cmdtab const *, int, char **); +static int SetCommand(struct cmdtab const *, int, char **); +static int AddCommand(struct cmdtab const *, int, char **); +static int DeleteCommand(struct cmdtab const *, int, char **); +static int BgShellCommand(struct cmdtab const *, int, char **); +static int FgShellCommand(struct cmdtab const *, int, char **); +static int ShellCommand(struct cmdtab const *, int, char **, int); static int -HelpCommand(list, argc, argv, plist) -struct cmdtab *list; -int argc; -char **argv; -struct cmdtab *plist; +HelpCommand(struct cmdtab const * list, + int argc, + char **argv, + struct cmdtab const * plist) { - struct cmdtab *cmd; + struct cmdtab const *cmd; int n; if (!VarTerm) @@ -93,20 +98,17 @@ struct cmdtab *plist; if (argc > 0) { for (cmd = plist; cmd->name; cmd++) if (strcasecmp(cmd->name, *argv) == 0 && (cmd->lauth & VarLocalAuth)) { - fprintf(VarTerm, "%s\n", cmd->syntax); - return 0; + fprintf(VarTerm, "%s\n", cmd->syntax); + return 0; } - return -1; } - n = 0; for (cmd = plist; cmd->func; cmd++) if (cmd->name && (cmd->lauth & VarLocalAuth)) { fprintf(VarTerm, " %-9s: %-20s\n", cmd->name, cmd->helpmes); n++; } - if (n & 1) fprintf(VarTerm, "\n"); @@ -137,10 +139,7 @@ IsInteractive() } static int -DialCommand(cmdlist, argc, argv) -struct cmdtab *cmdlist; -int argc; -char **argv; +DialCommand(struct cmdtab const * cmdlist, int argc, char **argv) { int tries; int res; @@ -150,18 +149,16 @@ char **argv; fprintf(VarTerm, "LCP state is [%s]\n", StateNames[LcpFsm.state]); return 0; } - if (!IsInteractive()) - return(1); + return (1); if (argc > 0) { if (SelectSystem(*argv, CONFFILE) < 0) { if (VarTerm) - fprintf(VarTerm, "%s: not found.\n", *argv); + fprintf(VarTerm, "%s: not found.\n", *argv); return -1; } } - tries = 0; do { if (VarTerm) @@ -169,7 +166,7 @@ char **argv; modem = OpenModem(mode); if (modem < 0) { if (VarTerm) - fprintf(VarTerm, "Failed to open modem.\n"); + fprintf(VarTerm, "Failed to open modem.\n"); break; } if ((res = DialModem()) == EX_DONE) { @@ -185,7 +182,7 @@ char **argv; } static int -SetLoopback(struct cmdtab *cmdlist, int argc, char **argv) +SetLoopback(struct cmdtab const * cmdlist, int argc, char **argv) { if (argc == 1) if (!strcasecmp(*argv, "on")) @@ -196,7 +193,7 @@ SetLoopback(struct cmdtab *cmdlist, int argc, char **argv) } static int -BgShellCommand(struct cmdtab *cmdlist, int argc, char **argv) +BgShellCommand(struct cmdtab const * cmdlist, int argc, char **argv) { if (argc == 0) return -1; @@ -204,13 +201,13 @@ BgShellCommand(struct cmdtab *cmdlist, int argc, char **argv) } static int -FgShellCommand(struct cmdtab *cmdlist, int argc, char **argv) +FgShellCommand(struct cmdtab const * cmdlist, int argc, char **argv) { return ShellCommand(cmdlist, argc, argv, 0); } static int -ShellCommand(struct cmdtab *cmdlist, int argc, char **argv, int bg) +ShellCommand(struct cmdtab const * cmdlist, int argc, char **argv, int bg) { const char *shell; pid_t shpid; @@ -224,150 +221,149 @@ ShellCommand(struct cmdtab *cmdlist, int argc, char **argv, int bg) } #endif #ifdef NO_SHELL_IN_AUTO_INTERACTIVE + /* - * we want to stop shell commands when we've got a telnet connection - * to an auto mode ppp + * we want to stop shell commands when we've got a telnet connection to an + * auto mode ppp */ - if ((mode & (MODE_AUTO|MODE_INTER)) == (MODE_AUTO|MODE_INTER)) { - LogPrintf(LogWARN, "Shell is not allowed interactively in auto mode\n"); + if ((mode & (MODE_AUTO | MODE_INTER)) == (MODE_AUTO | MODE_INTER)) { + LogPrintf(LogWARN, "Shell is not allowed interactively in auto mode\n"); return 1; } #endif - if(argc == 0) + if (argc == 0) if (!(mode & MODE_INTER)) { LogPrintf(LogWARN, "Can only start an interactive shell in" - " interactive mode\n"); + " interactive mode\n"); return 1; } else if (bg) { LogPrintf(LogWARN, "Can only start an interactive shell in" - " the foreground mode\n"); + " the foreground mode\n"); return 1; } - - if((shell = getenv("SHELL")) == 0) + if ((shell = getenv("SHELL")) == 0) shell = _PATH_BSHELL; - if((shpid = fork()) == 0) { - int dtablesize, i, fd; - - if (VarTerm) - fd = fileno(VarTerm); - else if ((fd = open("/dev/null", O_RDWR)) == -1) { - LogPrintf(LogALERT, "Failed to open /dev/null: %s\n", strerror(errno)); - exit(1); - } - - for (i = 0; i < 3; i++) - dup2(fd, i); - - if (fd > 2) - if (VarTerm) { - oVarTerm = VarTerm; - VarTerm = 0; - if (oVarTerm && oVarTerm != stdout) - fclose(oVarTerm); - } else - close(fd); - - for (dtablesize = getdtablesize(), i = 3; i < dtablesize; i++) - (void)close(i); - - /* - * We are running setuid, we should change to - * real user for avoiding security problems. - */ - if (setgid(getgid()) < 0) { - LogPrintf(LogERROR, "setgid: %s\n", strerror(errno)); - exit(1); - } - if (setuid(getuid()) < 0) { - LogPrintf(LogERROR, "setuid: %s\n", strerror(errno)); - exit(1); - } - TtyOldMode(); - if(argc > 0) { - /* substitute pseudo args */ - for (i=1; i<argc; i++) - if (strcasecmp(argv[i], "HISADDR") == 0) - argv[i] = strdup(inet_ntoa(IpcpInfo.his_ipaddr)); - else if (strcasecmp(argv[i], "INTERFACE") == 0) - argv[i] = strdup(IfDevName); - else if (strcasecmp(argv[i], "MYADDR") == 0) - argv[i] = strdup(inet_ntoa(IpcpInfo.want_ipaddr)); - if (bg) { - pid_t p; - p = getpid(); - if (daemon(1,1) == -1) { - LogPrintf(LogERROR, "%d: daemon: %s", p, strerror(errno)); - exit(1); - } - } - (void)execvp(argv[0], argv); - } - else - (void)execl(shell, shell, NULL); - - LogPrintf(LogWARN, "exec() of %s failed\n", argc > 0 ? argv[0] : shell); - exit(255); - } + if ((shpid = fork()) == 0) { + int dtablesize, i, fd; - if( shpid == (pid_t)-1 ) { + if (VarTerm) + fd = fileno(VarTerm); + else if ((fd = open("/dev/null", O_RDWR)) == -1) { + LogPrintf(LogALERT, "Failed to open /dev/null: %s\n", strerror(errno)); + exit(1); + } + for (i = 0; i < 3; i++) + dup2(fd, i); + + if (fd > 2) + if (VarTerm) { + oVarTerm = VarTerm; + VarTerm = 0; + if (oVarTerm && oVarTerm != stdout) + fclose(oVarTerm); + } else + close(fd); + + for (dtablesize = getdtablesize(), i = 3; i < dtablesize; i++) + (void) close(i); + + /* + * We are running setuid, we should change to real user for avoiding + * security problems. + */ + if (setgid(getgid()) < 0) { + LogPrintf(LogERROR, "setgid: %s\n", strerror(errno)); + exit(1); + } + if (setuid(getuid()) < 0) { + LogPrintf(LogERROR, "setuid: %s\n", strerror(errno)); + exit(1); + } + TtyOldMode(); + if (argc > 0) { + /* substitute pseudo args */ + for (i = 1; i < argc; i++) + if (strcasecmp(argv[i], "HISADDR") == 0) + argv[i] = strdup(inet_ntoa(IpcpInfo.his_ipaddr)); + else if (strcasecmp(argv[i], "INTERFACE") == 0) + argv[i] = strdup(IfDevName); + else if (strcasecmp(argv[i], "MYADDR") == 0) + argv[i] = strdup(inet_ntoa(IpcpInfo.want_ipaddr)); + if (bg) { + pid_t p; + + p = getpid(); + if (daemon(1, 1) == -1) { + LogPrintf(LogERROR, "%d: daemon: %s", p, strerror(errno)); + exit(1); + } + } + (void) execvp(argv[0], argv); + } else + (void) execl(shell, shell, NULL); + + LogPrintf(LogWARN, "exec() of %s failed\n", argc > 0 ? argv[0] : shell); + exit(255); + } + if (shpid == (pid_t) - 1) { LogPrintf(LogERROR, "Fork failed: %s\n", strerror(errno)); } else { int status; - (void)waitpid(shpid, &status, 0); + + (void) waitpid(shpid, &status, 0); } TtyCommandMode(1); - return(0); + return (0); } struct cmdtab const Commands[] = { - { "accept", NULL, AcceptCommand, LOCAL_AUTH, - "accept option request", "accept option .."}, - { "add", NULL, AddCommand, LOCAL_AUTH, - "add route", "add dest mask gateway"}, - { "bg", "!bg", BgShellCommand, LOCAL_AUTH, - "Run a command in the background", "[!]bg command"}, - { "close", NULL, CloseCommand, LOCAL_AUTH, - "Close connection", "close"}, - { "delete", NULL, DeleteCommand, LOCAL_AUTH, - "delete route", "delete ALL | dest [gateway [mask]]"}, - { "deny", NULL, DenyCommand, LOCAL_AUTH, - "Deny option request", "deny option .."}, - { "dial", "call", DialCommand, LOCAL_AUTH, - "Dial and login", "dial|call [remote]"}, - { "disable", NULL, DisableCommand, LOCAL_AUTH, - "Disable option", "disable option .."}, - { "display", NULL, DisplayCommand, LOCAL_AUTH, - "Display option configs", "display"}, - { "enable", NULL, EnableCommand, LOCAL_AUTH, - "Enable option", "enable option .."}, - { "passwd", NULL, LocalAuthCommand,LOCAL_NO_AUTH, - "Password for manipulation", "passwd option .."}, - { "load", NULL, LoadCommand, LOCAL_AUTH, - "Load settings", "load [remote]"}, - { "save", NULL, SaveCommand, LOCAL_AUTH, - "Save settings", "save"}, - { "set", "setup", SetCommand, LOCAL_AUTH, - "Set parameters", "set[up] var value"}, - { "shell", "!", FgShellCommand, LOCAL_AUTH, - "Run a subshell", "shell|! [sh command]"}, - { "show", NULL, ShowCommand, LOCAL_AUTH, - "Show status and statictics", "show var"}, - { "term", NULL, TerminalCommand,LOCAL_AUTH, - "Enter to terminal mode", "term"}, - { "alias", NULL, AliasCommand, LOCAL_AUTH, - "alias control", "alias option [yes|no]"}, - { "quit", "bye", QuitCommand, LOCAL_AUTH | LOCAL_NO_AUTH, - "Quit PPP program", "quit|bye [all]"}, - { "help", "?", HelpCommand, LOCAL_AUTH | LOCAL_NO_AUTH, - "Display this message", "help|? [command]", (void *)Commands }, - { NULL, "down", DownCommand, LOCAL_AUTH, - "Generate down event", "down"}, - { NULL, NULL, NULL }, + {"accept", NULL, AcceptCommand, LOCAL_AUTH, + "accept option request", "accept option .."}, + {"add", NULL, AddCommand, LOCAL_AUTH, + "add route", "add dest mask gateway"}, + {"bg", "!bg", BgShellCommand, LOCAL_AUTH, + "Run a command in the background", "[!]bg command"}, + {"close", NULL, CloseCommand, LOCAL_AUTH, + "Close connection", "close"}, + {"delete", NULL, DeleteCommand, LOCAL_AUTH, + "delete route", "delete ALL | dest [gateway [mask]]"}, + {"deny", NULL, DenyCommand, LOCAL_AUTH, + "Deny option request", "deny option .."}, + {"dial", "call", DialCommand, LOCAL_AUTH, + "Dial and login", "dial|call [remote]"}, + {"disable", NULL, DisableCommand, LOCAL_AUTH, + "Disable option", "disable option .."}, + {"display", NULL, DisplayCommand, LOCAL_AUTH, + "Display option configs", "display"}, + {"enable", NULL, EnableCommand, LOCAL_AUTH, + "Enable option", "enable option .."}, + {"passwd", NULL, LocalAuthCommand, LOCAL_NO_AUTH, + "Password for manipulation", "passwd option .."}, + {"load", NULL, LoadCommand, LOCAL_AUTH, + "Load settings", "load [remote]"}, + {"save", NULL, SaveCommand, LOCAL_AUTH, + "Save settings", "save"}, + {"set", "setup", SetCommand, LOCAL_AUTH, + "Set parameters", "set[up] var value"}, + {"shell", "!", FgShellCommand, LOCAL_AUTH, + "Run a subshell", "shell|! [sh command]"}, + {"show", NULL, ShowCommand, LOCAL_AUTH, + "Show status and statictics", "show var"}, + {"term", NULL, TerminalCommand, LOCAL_AUTH, + "Enter to terminal mode", "term"}, + {"alias", NULL, AliasCommand, LOCAL_AUTH, + "alias control", "alias option [yes|no]"}, + {"quit", "bye", QuitCommand, LOCAL_AUTH | LOCAL_NO_AUTH, + "Quit PPP program", "quit|bye [all]"}, + {"help", "?", HelpCommand, LOCAL_AUTH | LOCAL_NO_AUTH, + "Display this message", "help|? [command]", (void *) Commands}, + {NULL, "down", DownCommand, LOCAL_AUTH, + "Generate down event", "down"}, + {NULL, NULL, NULL}, }; extern int ReportCcpStatus(); @@ -388,7 +384,8 @@ ShowLoopback() return 0; } -static int ShowLogLevel() +static int +ShowLogLevel() { int i; @@ -404,7 +401,8 @@ static int ShowLogLevel() return 0; } -static int ShowEscape() +static int +ShowEscape() { int code, bit; @@ -413,25 +411,27 @@ static int ShowEscape() if (EscMap[32]) { for (code = 0; code < 32; code++) if (EscMap[code]) - for (bit = 0; bit < 8; bit++) - if (EscMap[code] & (1<<bit)) - fprintf(VarTerm, " 0x%02x", (code << 3) + bit); + for (bit = 0; bit < 8; bit++) + if (EscMap[code] & (1 << bit)) + fprintf(VarTerm, " 0x%02x", (code << 3) + bit); fprintf(VarTerm, "\n"); } return 1; } -static int ShowTimeout() +static int +ShowTimeout() { if (!VarTerm) return 0; fprintf(VarTerm, " Idle Timer: %d secs LQR Timer: %d secs" - " Retry Timer: %d secs\n", VarIdleTimeout, VarLqrTimeout, - VarRetryTimeout); + " Retry Timer: %d secs\n", VarIdleTimeout, VarLqrTimeout, + VarRetryTimeout); return 1; } -static int ShowStopped() +static int +ShowStopped() { if (!VarTerm) return 0; @@ -459,7 +459,8 @@ static int ShowStopped() return 1; } -static int ShowAuthKey() +static int +ShowAuthKey() { if (!VarTerm) return 0; @@ -468,7 +469,8 @@ static int ShowAuthKey() return 1; } -static int ShowVersion() +static int +ShowVersion() { extern char VarVersion[]; extern char VarLocalVersion[]; @@ -479,7 +481,8 @@ static int ShowVersion() return 1; } -static int ShowInitialMRU() +static int +ShowInitialMRU() { if (!VarTerm) return 0; @@ -487,7 +490,8 @@ static int ShowInitialMRU() return 1; } -static int ShowPreferredMTU() +static int +ShowPreferredMTU() { if (!VarTerm) return 0; @@ -498,16 +502,18 @@ static int ShowPreferredMTU() return 1; } -static int ShowReconnect() +static int +ShowReconnect() { if (!VarTerm) return 0; fprintf(VarTerm, " Reconnect Timer: %d, %d tries\n", - VarReconnectTimer, VarReconnectTries); + VarReconnectTimer, VarReconnectTries); return 1; } -static int ShowRedial() +static int +ShowRedial() { if (!VarTerm) return 0; @@ -515,8 +521,7 @@ static int ShowRedial() if (VarRedialTimeout >= 0) { fprintf(VarTerm, " %d seconds, ", VarRedialTimeout); - } - else { + } else { fprintf(VarTerm, " Random 0 - %d seconds, ", REDIAL_PERIOD); } @@ -524,13 +529,12 @@ static int ShowRedial() if (VarRedialNextTimeout >= 0) { fprintf(VarTerm, " %d seconds, ", VarRedialNextTimeout); - } - else { + } else { fprintf(VarTerm, " Random 0 - %d seconds, ", REDIAL_PERIOD); } if (VarDialTries) - fprintf(VarTerm, "%d dial tries", VarDialTries); + fprintf(VarTerm, "%d dial tries", VarDialTries); fprintf(VarTerm, "\n"); @@ -538,88 +542,87 @@ static int ShowRedial() } #ifndef NOMSEXT -static int ShowMSExt() +static int +ShowMSExt() { if (!VarTerm) return 0; - fprintf(VarTerm, " MS PPP extention values \n" ); - fprintf(VarTerm, " Primary NS : %s\n", inet_ntoa( ns_entries[0] )); - fprintf(VarTerm, " Secondary NS : %s\n", inet_ntoa( ns_entries[1] )); - fprintf(VarTerm, " Primary NBNS : %s\n", inet_ntoa( nbns_entries[0] )); - fprintf(VarTerm, " Secondary NBNS : %s\n", inet_ntoa( nbns_entries[1] )); + fprintf(VarTerm, " MS PPP extention values \n"); + fprintf(VarTerm, " Primary NS : %s\n", inet_ntoa(ns_entries[0])); + fprintf(VarTerm, " Secondary NS : %s\n", inet_ntoa(ns_entries[1])); + fprintf(VarTerm, " Primary NBNS : %s\n", inet_ntoa(nbns_entries[0])); + fprintf(VarTerm, " Secondary NBNS : %s\n", inet_ntoa(nbns_entries[1])); return 1; } + #endif extern int ShowIfilter(), ShowOfilter(), ShowDfilter(), ShowAfilter(); struct cmdtab const ShowCommands[] = { - { "afilter", NULL, ShowAfilter, LOCAL_AUTH, - "Show keep Alive filters", "show afilter option .."}, - { "auth", NULL, ShowAuthKey, LOCAL_AUTH, - "Show auth name/key", "show auth"}, - { "ccp", NULL, ReportCcpStatus, LOCAL_AUTH, - "Show CCP status", "show cpp"}, - { "compress", NULL, ReportCompress, LOCAL_AUTH, - "Show compression statictics", "show compress"}, - { "dfilter", NULL, ShowDfilter, LOCAL_AUTH, - "Show Demand filters", "show dfilteroption .."}, - { "escape", NULL, ShowEscape, LOCAL_AUTH, - "Show escape characters", "show escape"}, - { "hdlc", NULL, ReportHdlcStatus, LOCAL_AUTH, - "Show HDLC error summary", "show hdlc"}, - { "ifilter", NULL, ShowIfilter, LOCAL_AUTH, - "Show Input filters", "show ifilter option .."}, - { "ipcp", NULL, ReportIpcpStatus, LOCAL_AUTH, - "Show IPCP status", "show ipcp"}, - { "lcp", NULL, ReportLcpStatus, LOCAL_AUTH, - "Show LCP status", "show lcp"}, - { "loopback", NULL, ShowLoopback, LOCAL_AUTH, - "Show current loopback setting", "show loopback"}, - { "log", NULL, ShowLogLevel, LOCAL_AUTH, - "Show current log level", "show log"}, - { "mem", NULL, ShowMemMap, LOCAL_AUTH, - "Show memory map", "show mem"}, - { "modem", NULL, ShowModemStatus, LOCAL_AUTH, - "Show modem setups", "show modem"}, - { "mru", NULL, ShowInitialMRU, LOCAL_AUTH, - "Show Initial MRU", "show mru"}, - { "mtu", NULL, ShowPreferredMTU, LOCAL_AUTH, - "Show Preferred MTU", "show mtu"}, - { "ofilter", NULL, ShowOfilter, LOCAL_AUTH, - "Show Output filters", "show ofilter option .."}, - { "proto", NULL, ReportProtStatus, LOCAL_AUTH, - "Show protocol summary", "show proto"}, - { "reconnect",NULL, ShowReconnect, LOCAL_AUTH, - "Show Reconnect timer,tries", "show reconnect"}, - { "redial", NULL, ShowRedial, LOCAL_AUTH, - "Show Redial timeout value", "show redial"}, - { "route", NULL, ShowRoute, LOCAL_AUTH, - "Show routing table", "show route"}, - { "timeout", NULL, ShowTimeout, LOCAL_AUTH, - "Show Idle timeout value", "show timeout"}, - { "stopped", NULL, ShowStopped, LOCAL_AUTH, - "Show STOPPED timeout value", "show stopped"}, + {"afilter", NULL, ShowAfilter, LOCAL_AUTH, + "Show keep Alive filters", "show afilter option .."}, + {"auth", NULL, ShowAuthKey, LOCAL_AUTH, + "Show auth name/key", "show auth"}, + {"ccp", NULL, ReportCcpStatus, LOCAL_AUTH, + "Show CCP status", "show cpp"}, + {"compress", NULL, ReportCompress, LOCAL_AUTH, + "Show compression statictics", "show compress"}, + {"dfilter", NULL, ShowDfilter, LOCAL_AUTH, + "Show Demand filters", "show dfilteroption .."}, + {"escape", NULL, ShowEscape, LOCAL_AUTH, + "Show escape characters", "show escape"}, + {"hdlc", NULL, ReportHdlcStatus, LOCAL_AUTH, + "Show HDLC error summary", "show hdlc"}, + {"ifilter", NULL, ShowIfilter, LOCAL_AUTH, + "Show Input filters", "show ifilter option .."}, + {"ipcp", NULL, ReportIpcpStatus, LOCAL_AUTH, + "Show IPCP status", "show ipcp"}, + {"lcp", NULL, ReportLcpStatus, LOCAL_AUTH, + "Show LCP status", "show lcp"}, + {"loopback", NULL, ShowLoopback, LOCAL_AUTH, + "Show current loopback setting", "show loopback"}, + {"log", NULL, ShowLogLevel, LOCAL_AUTH, + "Show current log level", "show log"}, + {"mem", NULL, ShowMemMap, LOCAL_AUTH, + "Show memory map", "show mem"}, + {"modem", NULL, ShowModemStatus, LOCAL_AUTH, + "Show modem setups", "show modem"}, + {"mru", NULL, ShowInitialMRU, LOCAL_AUTH, + "Show Initial MRU", "show mru"}, + {"mtu", NULL, ShowPreferredMTU, LOCAL_AUTH, + "Show Preferred MTU", "show mtu"}, + {"ofilter", NULL, ShowOfilter, LOCAL_AUTH, + "Show Output filters", "show ofilter option .."}, + {"proto", NULL, ReportProtStatus, LOCAL_AUTH, + "Show protocol summary", "show proto"}, + {"reconnect", NULL, ShowReconnect, LOCAL_AUTH, + "Show Reconnect timer,tries", "show reconnect"}, + {"redial", NULL, ShowRedial, LOCAL_AUTH, + "Show Redial timeout value", "show redial"}, + {"route", NULL, ShowRoute, LOCAL_AUTH, + "Show routing table", "show route"}, + {"timeout", NULL, ShowTimeout, LOCAL_AUTH, + "Show Idle timeout value", "show timeout"}, + {"stopped", NULL, ShowStopped, LOCAL_AUTH, + "Show STOPPED timeout value", "show stopped"}, #ifndef NOMSEXT - { "msext", NULL, ShowMSExt, LOCAL_AUTH, - "Show MS PPP extentions", "show msext"}, + {"msext", NULL, ShowMSExt, LOCAL_AUTH, + "Show MS PPP extentions", "show msext"}, #endif - { "version", NULL, ShowVersion, LOCAL_NO_AUTH | LOCAL_AUTH, - "Show version string", "show version"}, - { "help", "?", HelpCommand, LOCAL_NO_AUTH | LOCAL_AUTH, - "Display this message", "show help|? [command]", (void *)ShowCommands}, - { NULL, NULL, NULL }, + {"version", NULL, ShowVersion, LOCAL_NO_AUTH | LOCAL_AUTH, + "Show version string", "show version"}, + {"help", "?", HelpCommand, LOCAL_NO_AUTH | LOCAL_AUTH, + "Display this message", "show help|? [command]", (void *) ShowCommands}, + {NULL, NULL, NULL}, }; -struct cmdtab * -FindCommand(cmds, str, pmatch) -struct cmdtab *cmds; -char *str; -int *pmatch; +struct cmdtab const * +FindCommand(struct cmdtab const * cmds, char *str, int *pmatch) { int nmatch; int len; - struct cmdtab *found; + struct cmdtab const *found; found = NULL; len = strlen(str); @@ -627,15 +630,15 @@ int *pmatch; while (cmds->func) { if (cmds->name && strncasecmp(str, cmds->name, len) == 0) { if (cmds->name[len] == '\0') { - *pmatch = 1; - return cmds; + *pmatch = 1; + return cmds; } nmatch++; found = cmds; - } else if(cmds->alias && strncasecmp(str, cmds->alias, len) == 0) { + } else if (cmds->alias && strncasecmp(str, cmds->alias, len) == 0) { if (cmds->alias[len] == '\0') { - *pmatch = 1; - return cmds; + *pmatch = 1; + return cmds; } nmatch++; found = cmds; @@ -647,26 +650,23 @@ int *pmatch; } int -FindExec(cmdlist, argc, argv) -struct cmdtab *cmdlist; -int argc; -char **argv; +FindExec(struct cmdtab const * cmdlist, int argc, char **argv) { - struct cmdtab *cmd; + struct cmdtab const *cmd; int val = 1; int nmatch; cmd = FindCommand(cmdlist, *argv, &nmatch); if (nmatch > 1) LogPrintf(LogWARN, "%s: Ambiguous command\n", *argv); - else if (cmd && ( cmd->lauth & VarLocalAuth ) ) - val = (cmd->func)(cmd, --argc, ++argv, cmd->args); + else if (cmd && (cmd->lauth & VarLocalAuth)) + val = (cmd->func) (cmd, --argc, ++argv, cmd->args); else LogPrintf(LogWARN, "%s: Invalid command\n", *argv); if (val == -1) LogPrintf(LogWARN, "Usage: %s\n", cmd->syntax); - else if(val) + else if (val) LogPrintf(LogCOMMAND, "%s: Failed %d\n", *argv, val); return val; @@ -688,7 +688,7 @@ Prompt() else aft_cmd = 0; - if ( VarLocalAuth == LOCAL_AUTH ) + if (VarLocalAuth == LOCAL_AUTH) pauth = " ON "; else pauth = " on "; @@ -701,10 +701,7 @@ Prompt() } void -DecodeCommand(buff, nb, prompt) -char *buff; -int nb; -int prompt; +DecodeCommand(char *buff, int nb, int prompt) { char *vector[20]; char **argv; @@ -726,10 +723,7 @@ int prompt; } static int -ShowCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +ShowCommand(struct cmdtab const * list, int argc, char **argv) { if (argc > 0) FindExec(ShowCommands, argc, argv); @@ -742,7 +736,7 @@ char **argv; } static int -TerminalCommand() +TerminalCommand(struct cmdtab const * list, int argc, char **argv) { if (LcpFsm.state > ST_CLOSED) { if (VarTerm) @@ -750,37 +744,34 @@ TerminalCommand() return 1; } if (!IsInteractive()) - return(1); + return (1); modem = OpenModem(mode); if (modem < 0) { if (VarTerm) fprintf(VarTerm, "Failed to open modem.\n"); - return(1); + return (1); } if (VarTerm) { fprintf(VarTerm, "Enter to terminal mode.\n"); fprintf(VarTerm, "Type `~?' for help.\n"); } TtyTermMode(); - return(0); + return (0); } static int -QuitCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +QuitCommand(struct cmdtab const * list, int argc, char **argv) { FILE *oVarTerm; - if (mode & (MODE_DIRECT|MODE_DEDICATED|MODE_AUTO)) { + if (mode & (MODE_DIRECT | MODE_DEDICATED | MODE_AUTO)) { if (argc > 0 && (VarLocalAuth & LOCAL_AUTH)) { Cleanup(EX_NORMAL); mode &= ~MODE_INTER; oVarTerm = VarTerm; VarTerm = 0; if (oVarTerm && oVarTerm != stdout) - fclose(oVarTerm); + fclose(oVarTerm); } else { LogPrintf(LogPHASE, "Client connection closed.\n"); VarLocalAuth = LOCAL_NO_AUTH; @@ -788,7 +779,7 @@ char **argv; oVarTerm = VarTerm; VarTerm = 0; if (oVarTerm && oVarTerm != stdout) - fclose(oVarTerm); + fclose(oVarTerm); close(netfd); netfd = -1; } @@ -799,27 +790,24 @@ char **argv; } static int -CloseCommand() +CloseCommand(struct cmdtab const * list, int argc, char **argv) { reconnect(RECON_FALSE); LcpClose(); if (mode & MODE_BACKGROUND) - Cleanup(EX_NORMAL); + Cleanup(EX_NORMAL); return 0; } static int -DownCommand() +DownCommand(struct cmdtab const * list, int argc, char **argv) { LcpDown(); return 0; } static int -SetModemSpeed(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetModemSpeed(struct cmdtab const * list, int argc, char **argv) { int speed; @@ -839,31 +827,24 @@ char **argv; } static int -SetReconnect(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetReconnect(struct cmdtab const * list, int argc, char **argv) { if (argc == 2) { VarReconnectTimer = atoi(argv[0]); VarReconnectTries = atoi(argv[1]); return 0; } - return -1; } static int -SetRedialTimeout(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetRedialTimeout(struct cmdtab const * list, int argc, char **argv) { int timeout; int tries; char *dot; - if (argc == 1 || argc == 2 ) { + if (argc == 1 || argc == 2) { if (strncasecmp(argv[0], "random", 6) == 0 && (argv[0][6] == '\0' || argv[0][6] == '.')) { VarRedialTimeout = -1; @@ -878,31 +859,29 @@ char **argv; VarRedialTimeout = timeout; else { LogPrintf(LogWARN, "Invalid redial timeout\n"); - return -1; + return -1; } } - dot = index(argv[0],'.'); + dot = index(argv[0], '.'); if (dot) { if (strcasecmp(++dot, "random") == 0) { - VarRedialNextTimeout = -1; - if (!randinit) { - randinit = 1; + VarRedialNextTimeout = -1; + if (!randinit) { + randinit = 1; srandomdev(); - } - } - else { - timeout = atoi(dot); - if (timeout >= 0) - VarRedialNextTimeout = timeout; - else { - LogPrintf(LogWARN, "Invalid next redial timeout\n"); + } + } else { + timeout = atoi(dot); + if (timeout >= 0) + VarRedialNextTimeout = timeout; + else { + LogPrintf(LogWARN, "Invalid next redial timeout\n"); return -1; - } + } } - } - else - VarRedialNextTimeout = NEXT_REDIAL_PERIOD; /* Default next timeout */ + } else + VarRedialNextTimeout = NEXT_REDIAL_PERIOD; /* Default next timeout */ if (argc == 2) { tries = atoi(argv[1]); @@ -916,15 +895,11 @@ char **argv; } return 0; } - return -1; } static int -SetStoppedTimeout(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetStoppedTimeout(struct cmdtab const * list, int argc, char **argv) { LcpFsm.StoppedTimer.load = 0; IpcpFsm.StoppedTimer.load = 0; @@ -933,9 +908,9 @@ char **argv; if (argc > 0) { LcpFsm.StoppedTimer.load = atoi(argv[0]) * SECTICKS; if (argc > 1) { - IpcpFsm.StoppedTimer.load = atoi(argv[1]) * SECTICKS; - if (argc > 2) - CcpFsm.StoppedTimer.load = atoi(argv[2]) * SECTICKS; + IpcpFsm.StoppedTimer.load = atoi(argv[1]) * SECTICKS; + if (argc > 2) + CcpFsm.StoppedTimer.load = atoi(argv[2]) * SECTICKS; } } return 0; @@ -944,10 +919,7 @@ char **argv; } static int -SetServer(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetServer(struct cmdtab const * list, int argc, char **argv) { int res = -1; @@ -958,45 +930,43 @@ char **argv; res = 0; } else if (*argv[0] == '/') { mode_t mask; + umask(mask = umask(0)); if (argc == 2) { - unsigned m; - if (sscanf(argv[1], "%o", &m) == 1) - mask = m; + unsigned m; + + if (sscanf(argv[1], "%o", &m) == 1) + mask = m; } res = ServerLocalOpen(argv[0], mask); } else { int port; + if (strspn(argv[0], "0123456789") != strlen(argv[0])) { - struct servent *s; - if ((s = getservbyname(argv[0], "tcp")) == NULL) { - port = 0; - LogPrintf(LogWARN, "%s: Invalid port or service\n", argv[0]); - } else - port = ntohs(s->s_port); + struct servent *s; + + if ((s = getservbyname(argv[0], "tcp")) == NULL) { + port = 0; + LogPrintf(LogWARN, "%s: Invalid port or service\n", argv[0]); + } else + port = ntohs(s->s_port); } else - port = atoi(argv[0]); + port = atoi(argv[0]); if (port) - res = ServerTcpOpen(port); + res = ServerTcpOpen(port); } return res; } static int -SetModemParity(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetModemParity(struct cmdtab const * list, int argc, char **argv) { return argc > 0 ? ChangeParity(*argv) : -1; } static int -SetLogLevel(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetLogLevel(struct cmdtab const * list, int argc, char **argv) { int i; int res; @@ -1009,9 +979,9 @@ char **argv; arg = **argv == '+' || **argv == '-' ? *argv + 1 : *argv; for (i = LogMIN; i <= LogMAX; i++) if (strcasecmp(arg, LogName(i)) == 0) { - if (**argv == '-') - LogDiscard(i); - else + if (**argv == '-') + LogDiscard(i); + else LogKeep(i); break; } @@ -1025,10 +995,7 @@ char **argv; } static int -SetEscape(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetEscape(struct cmdtab const * list, int argc, char **argv) { int code; @@ -1037,17 +1004,14 @@ char **argv; while (argc-- > 0) { sscanf(*argv++, "%x", &code); code &= 0xff; - EscMap[code >> 3] |= (1 << (code&7)); + EscMap[code >> 3] |= (1 << (code & 7)); EscMap[32] = 1; } return 0; } static int -SetInitialMRU(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetInitialMRU(struct cmdtab const * list, int argc, char **argv) { long mru; char *err; @@ -1064,15 +1028,11 @@ char **argv; } LogPrintf(LogWARN, err, mru); } - return -1; } static int -SetPreferredMTU(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetPreferredMTU(struct cmdtab const * list, int argc, char **argv) { long mtu; char *err; @@ -1092,19 +1052,15 @@ char **argv; } LogPrintf(LogWARN, err, mtu); } - return -1; } static int -SetIdleTimeout(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetIdleTimeout(struct cmdtab const * list, int argc, char **argv) { if (argc-- > 0) { VarIdleTimeout = atoi(*argv++); - UpdateIdleTimer(); /* If we're connected, restart the idle timer */ + UpdateIdleTimer(); /* If we're connected, restart the idle timer */ if (argc-- > 0) { VarLqrTimeout = atoi(*argv++); if (VarLqrTimeout < 1) @@ -1117,13 +1073,11 @@ char **argv; } return 0; } - return -1; } struct in_addr -GetIpAddr(cp) -char *cp; +GetIpAddr(char *cp) { struct hostent *hp; struct in_addr ipaddr; @@ -1133,40 +1087,37 @@ char *cp; bcopy(hp->h_addr, &ipaddr, hp->h_length); else if (inet_aton(cp, &ipaddr) == 0) ipaddr.s_addr = 0; - return(ipaddr); + return (ipaddr); } static int -SetInterfaceAddr(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetInterfaceAddr(struct cmdtab const * list, int argc, char **argv) { DefMyAddress.ipaddr.s_addr = DefHisAddress.ipaddr.s_addr = 0L; if (argc > 4) - return -1; + return -1; HaveTriggerAddress = 0; ifnetmask.s_addr = 0; if (argc > 0) { if (ParseAddr(argc, argv++, - &DefMyAddress.ipaddr, - &DefMyAddress.mask, - &DefMyAddress.width) == 0) - return 1; + &DefMyAddress.ipaddr, + &DefMyAddress.mask, + &DefMyAddress.width) == 0) + return 1; if (--argc > 0) { if (ParseAddr(argc, argv++, &DefHisAddress.ipaddr, &DefHisAddress.mask, &DefHisAddress.width) == 0) - return 2; + return 2; if (--argc > 0) { - ifnetmask = GetIpAddr(*argv); - if (--argc > 0) { - TriggerAddress = GetIpAddr(*argv); - HaveTriggerAddress = 1; + ifnetmask = GetIpAddr(*argv); + if (--argc > 0) { + TriggerAddress = GetIpAddr(*argv); + HaveTriggerAddress = 1; } } } @@ -1183,72 +1134,62 @@ char **argv; DefHisAddress.mask.s_addr = 0; DefHisAddress.width = 0; } - IpcpInfo.want_ipaddr.s_addr = DefMyAddress.ipaddr.s_addr; IpcpInfo.his_ipaddr.s_addr = DefHisAddress.ipaddr.s_addr; if ((mode & MODE_AUTO) || - ((mode & MODE_DEDICATED) && dstsystem)) { + ((mode & MODE_DEDICATED) && dstsystem)) { if (OsSetIpaddress(DefMyAddress.ipaddr, DefHisAddress.ipaddr, ifnetmask) < 0) - return 4; + return 4; } - return 0; } #ifndef NOMSEXT void -SetMSEXT(pri_addr, sec_addr, argc, argv) -struct in_addr *pri_addr; -struct in_addr *sec_addr; -int argc; -char **argv; +SetMSEXT(struct in_addr * pri_addr, + struct in_addr * sec_addr, + int argc, + char **argv) { int dummyint; struct in_addr dummyaddr; pri_addr->s_addr = sec_addr->s_addr = 0L; - if( argc > 0 ) { + if (argc > 0) { ParseAddr(argc, argv++, pri_addr, &dummyaddr, &dummyint); - if( --argc > 0 ) + if (--argc > 0) ParseAddr(argc, argv++, sec_addr, &dummyaddr, &dummyint); else sec_addr->s_addr = pri_addr->s_addr; } - /* - * if the primary/secondary ns entries are 0.0.0.0 we should - * set them to either the localhost's ip, or the values in - * /etc/resolv.conf ?? - * - * up to you if you want to implement this... - */ + /* + * if the primary/secondary ns entries are 0.0.0.0 we should set them to + * either the localhost's ip, or the values in /etc/resolv.conf ?? + * + * up to you if you want to implement this... + */ } static int -SetNS(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetNS(struct cmdtab const * list, int argc, char **argv) { SetMSEXT(&ns_entries[0], &ns_entries[1], argc, argv); return 0; } static int -SetNBNS(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetNBNS(struct cmdtab const * list, int argc, char **argv) { SetMSEXT(&nbns_entries[0], &nbns_entries[1], argc, argv); return 0; } -#endif /* MS_EXT */ +#endif /* MS_EXT */ #define VAR_AUTHKEY 0 #define VAR_DIAL 1 @@ -1260,11 +1201,7 @@ char **argv; #define VAR_HANGUP 7 static int -SetVariable(list, argc, argv, param) -struct cmdtab *list; -int argc; -char **argv; -int param; +SetVariable(struct cmdtab const * list, int argc, char **argv, int param) { u_long map; char *arg; @@ -1275,51 +1212,49 @@ int param; arg = ""; switch (param) { - case VAR_AUTHKEY: - strncpy(VarAuthKey, arg, sizeof(VarAuthKey)-1); - VarAuthKey[sizeof(VarAuthKey)-1] = '\0'; - break; - case VAR_AUTHNAME: - strncpy(VarAuthName, arg, sizeof(VarAuthName)-1); - VarAuthName[sizeof(VarAuthName)-1] = '\0'; - break; - case VAR_DIAL: - strncpy(VarDialScript, arg, sizeof(VarDialScript)-1); - VarDialScript[sizeof(VarDialScript)-1] = '\0'; - break; - case VAR_LOGIN: - strncpy(VarLoginScript, arg, sizeof(VarLoginScript)-1); - VarLoginScript[sizeof(VarLoginScript)-1] = '\0'; - break; - case VAR_DEVICE: - CloseModem(); - strncpy(VarDevice, arg, sizeof(VarDevice)-1); - VarDevice[sizeof(VarDevice)-1] = '\0'; - VarBaseDevice = rindex(VarDevice, '/'); - VarBaseDevice = VarBaseDevice ? VarBaseDevice + 1 : ""; - break; - case VAR_ACCMAP: - sscanf(arg, "%lx", &map); - VarAccmap = map; - break; - case VAR_PHONE: - strncpy(VarPhoneList, arg, sizeof(VarPhoneList)-1); - VarPhoneList[sizeof(VarPhoneList)-1] = '\0'; - strcpy(VarPhoneCopy, VarPhoneList); - VarNextPhone = VarPhoneCopy; - break; - case VAR_HANGUP: - strncpy(VarHangupScript, arg, sizeof(VarHangupScript)-1); - VarHangupScript[sizeof(VarHangupScript)-1] = '\0'; - break; + case VAR_AUTHKEY: + strncpy(VarAuthKey, arg, sizeof(VarAuthKey) - 1); + VarAuthKey[sizeof(VarAuthKey) - 1] = '\0'; + break; + case VAR_AUTHNAME: + strncpy(VarAuthName, arg, sizeof(VarAuthName) - 1); + VarAuthName[sizeof(VarAuthName) - 1] = '\0'; + break; + case VAR_DIAL: + strncpy(VarDialScript, arg, sizeof(VarDialScript) - 1); + VarDialScript[sizeof(VarDialScript) - 1] = '\0'; + break; + case VAR_LOGIN: + strncpy(VarLoginScript, arg, sizeof(VarLoginScript) - 1); + VarLoginScript[sizeof(VarLoginScript) - 1] = '\0'; + break; + case VAR_DEVICE: + CloseModem(); + strncpy(VarDevice, arg, sizeof(VarDevice) - 1); + VarDevice[sizeof(VarDevice) - 1] = '\0'; + VarBaseDevice = rindex(VarDevice, '/'); + VarBaseDevice = VarBaseDevice ? VarBaseDevice + 1 : ""; + break; + case VAR_ACCMAP: + sscanf(arg, "%lx", &map); + VarAccmap = map; + break; + case VAR_PHONE: + strncpy(VarPhoneList, arg, sizeof(VarPhoneList) - 1); + VarPhoneList[sizeof(VarPhoneList) - 1] = '\0'; + strcpy(VarPhoneCopy, VarPhoneList); + VarNextPhone = VarPhoneCopy; + break; + case VAR_HANGUP: + strncpy(VarHangupScript, arg, sizeof(VarHangupScript) - 1); + VarHangupScript[sizeof(VarHangupScript) - 1] = '\0'; + break; } return 0; } -static int SetCtsRts(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +static int +SetCtsRts(struct cmdtab const * list, int argc, char **argv) { if (argc > 0) { if (strcmp(*argv, "on") == 0) @@ -1334,10 +1269,8 @@ char **argv; } -static int SetOpenMode(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +static int +SetOpenMode(struct cmdtab const * list, int argc, char **argv) { if (argc > 0) { if (strcmp(*argv, "active") == 0) @@ -1354,76 +1287,73 @@ char **argv; extern int SetIfilter(), SetOfilter(), SetDfilter(), SetAfilter(); struct cmdtab const SetCommands[] = { - { "accmap", NULL, SetVariable, LOCAL_AUTH, - "Set accmap value", "set accmap hex-value", (void *)VAR_ACCMAP}, - { "afilter", NULL, SetAfilter, LOCAL_AUTH, - "Set keep Alive filter", "set afilter ..."}, - { "authkey", "key", SetVariable, LOCAL_AUTH, - "Set authentication key", "set authkey|key key", (void *)VAR_AUTHKEY}, - { "authname", NULL, SetVariable, LOCAL_AUTH, - "Set authentication name", "set authname name", (void *)VAR_AUTHNAME}, - { "ctsrts", NULL, SetCtsRts, LOCAL_AUTH, - "Use CTS/RTS modem signalling", "set ctsrts [on|off]"}, - { "device", "line", SetVariable, LOCAL_AUTH, - "Set modem device name", "set device|line device-name", (void *)VAR_DEVICE}, - { "dfilter", NULL, SetDfilter, LOCAL_AUTH, - "Set demand filter", "set dfilter ..."}, - { "dial", NULL, SetVariable, LOCAL_AUTH, - "Set dialing script", "set dial chat-script", (void *)VAR_DIAL}, - { "escape", NULL, SetEscape, LOCAL_AUTH, - "Set escape characters", "set escape hex-digit ..."}, - { "hangup", NULL, SetVariable, LOCAL_AUTH, - "Set hangup script", "set hangup chat-script", (void *)VAR_HANGUP}, - { "ifaddr", NULL, SetInterfaceAddr, LOCAL_AUTH, - "Set destination address", "set ifaddr [src-addr [dst-addr [netmask [trg-addr]]]]"}, - { "ifilter", NULL, SetIfilter, LOCAL_AUTH, - "Set input filter", "set ifilter ..."}, - { "loopback", NULL, SetLoopback, LOCAL_AUTH, - "Set loopback facility", "set loopback on|off"}, - { "log", NULL, SetLogLevel, LOCAL_AUTH, - "Set log level", "set log [+|-]value..."}, - { "login", NULL, SetVariable, LOCAL_AUTH, - "Set login script", "set login chat-script", (void *)VAR_LOGIN }, - { "mru", NULL, SetInitialMRU, LOCAL_AUTH, - "Set Initial MRU value", "set mru value" }, - { "mtu", NULL, SetPreferredMTU, LOCAL_AUTH, - "Set Preferred MTU value", "set mtu value" }, - { "ofilter", NULL, SetOfilter, LOCAL_AUTH, - "Set output filter", "set ofilter ..." }, - { "openmode", NULL, SetOpenMode, LOCAL_AUTH, - "Set open mode", "set openmode [active|passive]"}, - { "parity", NULL, SetModemParity, LOCAL_AUTH, - "Set modem parity", "set parity [odd|even|none]"}, - { "phone", NULL, SetVariable, LOCAL_AUTH, - "Set telephone number(s)", "set phone phone1[:phone2[...]]", (void *)VAR_PHONE }, - { "reconnect",NULL, SetReconnect, LOCAL_AUTH, - "Set Reconnect timeout", "set reconnect value ntries"}, - { "redial", NULL, SetRedialTimeout, LOCAL_AUTH, - "Set Redial timeout", "set redial value|random[.value|random] [dial_attempts]"}, - { "stopped", NULL, SetStoppedTimeout, LOCAL_AUTH, - "Set STOPPED timeouts", "set stopped [LCPseconds [IPCPseconds [CCPseconds]]]"}, - { "server", "socket", SetServer, LOCAL_AUTH, - "Set server port", "set server|socket TcpPort|LocalName|none [mask]"}, - { "speed", NULL, SetModemSpeed, LOCAL_AUTH, - "Set modem speed", "set speed value"}, - { "timeout", NULL, SetIdleTimeout, LOCAL_AUTH, - "Set Idle timeout", "set timeout value"}, + {"accmap", NULL, SetVariable, LOCAL_AUTH, + "Set accmap value", "set accmap hex-value", (void *) VAR_ACCMAP}, + {"afilter", NULL, SetAfilter, LOCAL_AUTH, + "Set keep Alive filter", "set afilter ..."}, + {"authkey", "key", SetVariable, LOCAL_AUTH, + "Set authentication key", "set authkey|key key", (void *) VAR_AUTHKEY}, + {"authname", NULL, SetVariable, LOCAL_AUTH, + "Set authentication name", "set authname name", (void *) VAR_AUTHNAME}, + {"ctsrts", NULL, SetCtsRts, LOCAL_AUTH, + "Use CTS/RTS modem signalling", "set ctsrts [on|off]"}, + {"device", "line", SetVariable, LOCAL_AUTH, + "Set modem device name", "set device|line device-name", (void *) VAR_DEVICE}, + {"dfilter", NULL, SetDfilter, LOCAL_AUTH, + "Set demand filter", "set dfilter ..."}, + {"dial", NULL, SetVariable, LOCAL_AUTH, + "Set dialing script", "set dial chat-script", (void *) VAR_DIAL}, + {"escape", NULL, SetEscape, LOCAL_AUTH, + "Set escape characters", "set escape hex-digit ..."}, + {"hangup", NULL, SetVariable, LOCAL_AUTH, + "Set hangup script", "set hangup chat-script", (void *) VAR_HANGUP}, + {"ifaddr", NULL, SetInterfaceAddr, LOCAL_AUTH, + "Set destination address", "set ifaddr [src-addr [dst-addr [netmask [trg-addr]]]]"}, + {"ifilter", NULL, SetIfilter, LOCAL_AUTH, + "Set input filter", "set ifilter ..."}, + {"loopback", NULL, SetLoopback, LOCAL_AUTH, + "Set loopback facility", "set loopback on|off"}, + {"log", NULL, SetLogLevel, LOCAL_AUTH, + "Set log level", "set log [+|-]value..."}, + {"login", NULL, SetVariable, LOCAL_AUTH, + "Set login script", "set login chat-script", (void *) VAR_LOGIN}, + {"mru", NULL, SetInitialMRU, LOCAL_AUTH, + "Set Initial MRU value", "set mru value"}, + {"mtu", NULL, SetPreferredMTU, LOCAL_AUTH, + "Set Preferred MTU value", "set mtu value"}, + {"ofilter", NULL, SetOfilter, LOCAL_AUTH, + "Set output filter", "set ofilter ..."}, + {"openmode", NULL, SetOpenMode, LOCAL_AUTH, + "Set open mode", "set openmode [active|passive]"}, + {"parity", NULL, SetModemParity, LOCAL_AUTH, + "Set modem parity", "set parity [odd|even|none]"}, + {"phone", NULL, SetVariable, LOCAL_AUTH, + "Set telephone number(s)", "set phone phone1[:phone2[...]]", (void *) VAR_PHONE}, + {"reconnect", NULL, SetReconnect, LOCAL_AUTH, + "Set Reconnect timeout", "set reconnect value ntries"}, + {"redial", NULL, SetRedialTimeout, LOCAL_AUTH, + "Set Redial timeout", "set redial value|random[.value|random] [dial_attempts]"}, + {"stopped", NULL, SetStoppedTimeout, LOCAL_AUTH, + "Set STOPPED timeouts", "set stopped [LCPseconds [IPCPseconds [CCPseconds]]]"}, + {"server", "socket", SetServer, LOCAL_AUTH, + "Set server port", "set server|socket TcpPort|LocalName|none [mask]"}, + {"speed", NULL, SetModemSpeed, LOCAL_AUTH, + "Set modem speed", "set speed value"}, + {"timeout", NULL, SetIdleTimeout, LOCAL_AUTH, + "Set Idle timeout", "set timeout value"}, #ifndef NOMSEXT - { "ns", NULL, SetNS, LOCAL_AUTH, - "Set NameServer", "set ns pri-addr [sec-addr]"}, - { "nbns", NULL, SetNBNS, LOCAL_AUTH, - "Set NetBIOS NameServer", "set nbns pri-addr [sec-addr]"}, + {"ns", NULL, SetNS, LOCAL_AUTH, + "Set NameServer", "set ns pri-addr [sec-addr]"}, + {"nbns", NULL, SetNBNS, LOCAL_AUTH, + "Set NetBIOS NameServer", "set nbns pri-addr [sec-addr]"}, #endif - { "help", "?", HelpCommand, LOCAL_AUTH | LOCAL_NO_AUTH, - "Display this message", "set help|? [command]", (void *)SetCommands}, - { NULL, NULL, NULL }, + {"help", "?", HelpCommand, LOCAL_AUTH | LOCAL_NO_AUTH, + "Display this message", "set help|? [command]", (void *) SetCommands}, + {NULL, NULL, NULL}, }; static int -SetCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetCommand(struct cmdtab const * list, int argc, char **argv) { if (argc > 0) FindExec(SetCommands, argc, argv); @@ -1438,10 +1368,7 @@ char **argv; static int -AddCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +AddCommand(struct cmdtab const * list, int argc, char **argv) { struct in_addr dest, gateway, netmask; @@ -1458,15 +1385,11 @@ char **argv; OsSetRoute(RTM_ADD, dest, gateway, netmask); return 0; } - return -1; } static int -DeleteCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +DeleteCommand(struct cmdtab const * list, int argc, char **argv) { struct in_addr dest, gateway, netmask; @@ -1480,14 +1403,14 @@ char **argv; netmask.s_addr = INADDR_ANY; if (argc > 1) { if (strcasecmp(argv[1], "HISADDR") == 0) - gateway = IpcpInfo.his_ipaddr; + gateway = IpcpInfo.his_ipaddr; else - gateway = GetIpAddr(argv[1]); + gateway = GetIpAddr(argv[1]); if (argc == 3) { - if (inet_aton(argv[2], &netmask) == 0) { + if (inet_aton(argv[2], &netmask) == 0) { LogPrintf(LogWARN, "Bad netmask value.\n"); return -1; - } + } } } else gateway.s_addr = INADDR_ANY; @@ -1503,40 +1426,37 @@ static int AliasOption(); static struct cmdtab const AliasCommands[] = { - { "enable", NULL, AliasEnable, LOCAL_AUTH, - "enable IP aliasing", "alias enable [yes|no]"}, - { "port", NULL, AliasRedirectPort, LOCAL_AUTH, - "port redirection", "alias port [proto addr_local:port_local port_alias]"}, - { "addr", NULL, AliasRedirectAddr, LOCAL_AUTH, - "static address translation", "alias addr [addr_local addr_alias]"}, - { "deny_incoming", NULL, AliasOption, LOCAL_AUTH, - "stop incoming connections", "alias deny_incoming [yes|no]", - (void*)PKT_ALIAS_DENY_INCOMING}, - { "log", NULL, AliasOption, LOCAL_AUTH, - "log aliasing link creation", "alias log [yes|no]", - (void*)PKT_ALIAS_LOG}, - { "same_ports", NULL, AliasOption, LOCAL_AUTH, - "try to leave port numbers unchanged", "alias same_ports [yes|no]", - (void*)PKT_ALIAS_SAME_PORTS}, - { "use_sockets", NULL, AliasOption, LOCAL_AUTH, - "allocate host sockets", "alias use_sockets [yes|no]", - (void*)PKT_ALIAS_USE_SOCKETS }, - { "unregistered_only", NULL, AliasOption, LOCAL_AUTH, - "alias unregistered (private) IP address space only", - "alias unregistered_only [yes|no]", - (void*)PKT_ALIAS_UNREGISTERED_ONLY}, - { "help", "?", HelpCommand, LOCAL_AUTH | LOCAL_NO_AUTH, - "Display this message", "alias help|? [command]", - (void *)AliasCommands}, - { NULL, NULL, NULL }, + {"enable", NULL, AliasEnable, LOCAL_AUTH, + "enable IP aliasing", "alias enable [yes|no]"}, + {"port", NULL, AliasRedirectPort, LOCAL_AUTH, + "port redirection", "alias port [proto addr_local:port_local port_alias]"}, + {"addr", NULL, AliasRedirectAddr, LOCAL_AUTH, + "static address translation", "alias addr [addr_local addr_alias]"}, + {"deny_incoming", NULL, AliasOption, LOCAL_AUTH, + "stop incoming connections", "alias deny_incoming [yes|no]", + (void *) PKT_ALIAS_DENY_INCOMING}, + {"log", NULL, AliasOption, LOCAL_AUTH, + "log aliasing link creation", "alias log [yes|no]", + (void *) PKT_ALIAS_LOG}, + {"same_ports", NULL, AliasOption, LOCAL_AUTH, + "try to leave port numbers unchanged", "alias same_ports [yes|no]", + (void *) PKT_ALIAS_SAME_PORTS}, + {"use_sockets", NULL, AliasOption, LOCAL_AUTH, + "allocate host sockets", "alias use_sockets [yes|no]", + (void *) PKT_ALIAS_USE_SOCKETS}, + {"unregistered_only", NULL, AliasOption, LOCAL_AUTH, + "alias unregistered (private) IP address space only", + "alias unregistered_only [yes|no]", + (void *) PKT_ALIAS_UNREGISTERED_ONLY}, + {"help", "?", HelpCommand, LOCAL_AUTH | LOCAL_NO_AUTH, + "Display this message", "alias help|? [command]", + (void *) AliasCommands}, + {NULL, NULL, NULL}, }; static int -AliasCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +AliasCommand(struct cmdtab const * list, int argc, char **argv) { if (argc > 0) FindExec(AliasCommands, argc, argv); @@ -1550,55 +1470,46 @@ char **argv; } static int -AliasEnable(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +AliasEnable(struct cmdtab const * list, int argc, char **argv) { if (argc == 1) if (strcasecmp(argv[0], "yes") == 0) { if (!(mode & MODE_ALIAS)) { - if (loadAliasHandlers(&VarAliasHandlers) == 0) { - mode |= MODE_ALIAS; - return 0; - } - LogPrintf(LogWARN, "Cannot load alias library\n"); - return 1; + if (loadAliasHandlers(&VarAliasHandlers) == 0) { + mode |= MODE_ALIAS; + return 0; + } + LogPrintf(LogWARN, "Cannot load alias library\n"); + return 1; } return 0; } else if (strcasecmp(argv[0], "no") == 0) { if (mode & MODE_ALIAS) { - unloadAliasHandlers(); - mode &= ~MODE_ALIAS; + unloadAliasHandlers(); + mode &= ~MODE_ALIAS; } return 0; } - return -1; } static int -AliasOption(list, argc, argv, param) -struct cmdtab *list; -int argc; -char **argv; -void* param; +AliasOption(struct cmdtab const * list, int argc, char **argv, void *param) { - if (argc == 1) - if (strcasecmp(argv[0], "yes") == 0) { - if (mode & MODE_ALIAS) { - VarSetPacketAliasMode((unsigned)param, (unsigned)param); - return 0; - } - LogPrintf(LogWARN, "alias not enabled\n"); - } else if (strcmp(argv[0], "no") == 0) { - if (mode & MODE_ALIAS) { - VarSetPacketAliasMode(0, (unsigned)param); - return 0; - } - LogPrintf(LogWARN, "alias not enabled\n"); - } - - return -1; + if (argc == 1) + if (strcasecmp(argv[0], "yes") == 0) { + if (mode & MODE_ALIAS) { + VarPacketAliasSetMode((unsigned) param, (unsigned) param); + return 0; + } + LogPrintf(LogWARN, "alias not enabled\n"); + } else if (strcmp(argv[0], "no") == 0) { + if (mode & MODE_ALIAS) { + VarPacketAliasSetMode(0, (unsigned) param); + return 0; + } + LogPrintf(LogWARN, "alias not enabled\n"); + } + return -1; } diff --git a/usr.sbin/ppp/command.h b/usr.sbin/ppp/command.h index 940d506..04f918e 100644 --- a/usr.sbin/ppp/command.h +++ b/usr.sbin/ppp/command.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id$ + * $Id: command.h,v 1.4 1997/02/22 16:10:09 peter Exp $ * * TODO: */ @@ -23,8 +23,8 @@ struct cmdtab { char *name; char *alias; - int (*func)(); - u_char lauth; + int (*func) (); + u_char lauth; char *helpmes; char *syntax; void *args; diff --git a/usr.sbin/ppp/defs.h b/usr.sbin/ppp/defs.h index 937fcaf..7de532d 100644 --- a/usr.sbin/ppp/defs.h +++ b/usr.sbin/ppp/defs.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: defs.h,v 1.16 1997/06/13 02:07:29 brian Exp $ + * $Id: defs.h,v 1.17 1997/06/23 23:10:09 brian Exp $ * * TODO: */ @@ -37,14 +37,14 @@ * Check follwiing definitions for your machine envirinment */ #ifdef __FreeBSD__ -#define MODEM_DEV "/dev/cuaa1" /* name of tty device */ -#define BASE_MODEM_DEV "cuaa1" /* name of base tty device */ +#define MODEM_DEV "/dev/cuaa1" /* name of tty device */ +#define BASE_MODEM_DEV "cuaa1" /* name of base tty device */ #else -#define MODEM_DEV "/dev/tty01" /* name of tty device */ -#define BASE_MODEM_DEV "tty01" /* name of base tty device */ +#define MODEM_DEV "/dev/tty01" /* name of tty device */ +#define BASE_MODEM_DEV "tty01" /* name of base tty device */ #endif -#define MODEM_SPEED B38400 /* tty speed */ -#define SERVER_PORT 3000 /* Base server port no. */ +#define MODEM_SPEED B38400 /* tty speed */ +#define SERVER_PORT 3000 /* Base server port no. */ #define MODEM_CTSRTS TRUE /* Default (true): use CTS/RTS signals */ #define RECONNECT_TIMER 3 /* Default timer for carrier loss */ @@ -99,4 +99,4 @@ char *dstsystem; #define FALSE (0) #endif -#endif /* _DEFS_H_ */ +#endif /* _DEFS_H_ */ diff --git a/usr.sbin/ppp/filter.c b/usr.sbin/ppp/filter.c index 375df1d..30b13a6 100644 --- a/usr.sbin/ppp/filter.c +++ b/usr.sbin/ppp/filter.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: filter.c,v 1.11 1997/06/28 01:34:03 brian Exp $ + * $Id: filter.c,v 1.12 1997/07/27 23:26:23 brian Exp $ * * TODO: Shoud send ICMP error message when we discard packets. */ @@ -42,36 +42,35 @@ static struct filterent filterdata; static u_long netmasks[33] = { - 0x00000000, - 0x80000000, 0xC0000000, 0xE0000000, 0xF0000000, - 0xF8000000, 0xFC000000, 0xFE000000, 0xFF000000, - 0xFF800000, 0xFFC00000, 0xFFE00000, 0xFFF00000, - 0xFFF80000, 0xFFFC0000, 0xFFFE0000, 0xFFFF0000, - 0xFFFF8000, 0xFFFFC000, 0xFFFFE000, 0xFFFFF000, - 0xFFFFF800, 0xFFFFFC00, 0xFFFFFE00, 0xFFFFFF00, - 0xFFFFFF80, 0xFFFFFFC0, 0xFFFFFFE0, 0xFFFFFFF0, - 0xFFFFFFF8, 0xFFFFFFFC, 0xFFFFFFFE, 0xFFFFFFFF, + 0x00000000, + 0x80000000, 0xC0000000, 0xE0000000, 0xF0000000, + 0xF8000000, 0xFC000000, 0xFE000000, 0xFF000000, + 0xFF800000, 0xFFC00000, 0xFFE00000, 0xFFF00000, + 0xFFF80000, 0xFFFC0000, 0xFFFE0000, 0xFFFF0000, + 0xFFFF8000, 0xFFFFC000, 0xFFFFE000, 0xFFFFF000, + 0xFFFFF800, 0xFFFFFC00, 0xFFFFFE00, 0xFFFFFF00, + 0xFFFFFF80, 0xFFFFFFC0, 0xFFFFFFE0, 0xFFFFFFF0, + 0xFFFFFFF8, 0xFFFFFFFC, 0xFFFFFFFE, 0xFFFFFFFF, }; int -ParseAddr(argc, argv, paddr, pmask, pwidth) -int argc; -char **argv; -struct in_addr *paddr; -struct in_addr *pmask; -int *pwidth; +ParseAddr(int argc, + char **argv, + struct in_addr * paddr, + struct in_addr * pmask, + int *pwidth) { int bits; char *cp, *wp; if (argc < 1) { LogPrintf(LogWARN, "ParseAddr: address/mask is expected.\n"); - return(0); + return (0); } - pmask->s_addr = 0xffffffff; /* Assume 255.255.255.255 as default */ cp = index(*argv, '/'); - if (cp) *cp++ = '\0'; + if (cp) + *cp++ = '\0'; if (strcasecmp(*argv, "HISADDR") == 0) *paddr = IpcpInfo.his_ipaddr; else if (strcasecmp(*argv, "MYADDR") == 0) @@ -82,7 +81,7 @@ int *pwidth; bits = strtol(cp, &wp, 0); if (cp == wp || bits < 0 || bits > 32) { LogPrintf(LogWARN, "ParseAddr: bad mask width.\n"); - return(0); + return (0); } } else { /* if width is not given, assume whole 32 bits are meaningfull */ @@ -92,18 +91,16 @@ int *pwidth; *pwidth = bits; pmask->s_addr = htonl(netmasks[bits]); - return(1); + return (1); } static int -ParseProto(argc, argv) -int argc; -char **argv; +ParseProto(int argc, char **argv) { int proto; if (argc < 1) - return(P_NONE); + return (P_NONE); if (STREQ(*argv, "tcp")) proto = P_TCP; @@ -113,13 +110,11 @@ char **argv; proto = P_ICMP; else proto = P_NONE; - return(proto); + return (proto); } static int -ParsePort(service, proto) -char *service; -int proto; +ParsePort(char *service, int proto) { char *protocol_name, *cp; struct servent *servent; @@ -136,26 +131,24 @@ int proto; protocol_name = 0; } - servent = getservbyname (service, protocol_name); + servent = getservbyname(service, protocol_name); if (servent != 0) - return(ntohs(servent->s_port)); + return (ntohs(servent->s_port)); port = strtol(service, &cp, 0); if (cp == service) { LogPrintf(LogWARN, "ParsePort: %s is not a port name or number.\n", - service); - return(0); + service); + return (0); } - return(port); + return (port); } /* * ICMP Syntax: src eq icmp_message_type */ static int -ParseIcmp(argc, argv) -int argc; -char **argv; +ParseIcmp(int argc, char **argv) { int type; char *cp; @@ -167,25 +160,24 @@ char **argv; break; default: LogPrintf(LogWARN, "ParseIcmp: bad icmp syntax.\n"); - return(0); + return (0); case 3: if (STREQ(*argv, "src") && STREQ(argv[1], "eq")) { type = strtol(argv[2], &cp, 0); if (cp == argv[2]) { LogPrintf(LogWARN, "ParseIcmp: type is expected.\n"); - return(0); + return (0); } filterdata.opt.srcop = OP_EQ; filterdata.opt.srcport = type; } break; } - return(1); + return (1); } static int -ParseOp(cp) -char *cp; +ParseOp(char *cp) { int op = OP_NONE; @@ -195,74 +187,69 @@ char *cp; op = OP_GT; else if (STREQ(cp, "lt")) op = OP_LT; - return(op); + return (op); } /* * UDP Syntax: [src op port] [dst op port] */ static int -ParseUdpOrTcp(argc, argv, proto) -int argc; -char **argv; -int proto; +ParseUdpOrTcp(int argc, char **argv, int proto) { - if (argc == 0) { /* permit/deny all tcp traffic */ filterdata.opt.srcop = filterdata.opt.dstop = A_NONE; - return(1); + return (1); } if (argc < 3) { LogPrintf(LogWARN, "ParseUdpOrTcp: bad udp/tcp syntax.\n"); - return(0); + return (0); } if (argc >= 3 && STREQ(*argv, "src")) { filterdata.opt.srcop = ParseOp(argv[1]); if (filterdata.opt.srcop == OP_NONE) { LogPrintf(LogWARN, "ParseUdpOrTcp: bad operation\n"); - return(0); + return (0); } filterdata.opt.srcport = ParsePort(argv[2], proto); if (filterdata.opt.srcport == 0) - return(0); - argc -= 3; argv += 3; + return (0); + argc -= 3; + argv += 3; if (argc == 0) - return(1); + return (1); } if (argc >= 3 && STREQ(argv[0], "dst")) { filterdata.opt.dstop = ParseOp(argv[1]); if (filterdata.opt.dstop == OP_NONE) { LogPrintf(LogWARN, "ParseUdpOrTcp: bad operation\n"); - return(0); + return (0); } filterdata.opt.dstport = ParsePort(argv[2], proto); if (filterdata.opt.dstport == 0) - return(0); - argc -= 3; argv += 3; + return (0); + argc -= 3; + argv += 3; if (argc == 0) - return(1); + return (1); } if (argc == 1) { if (STREQ(*argv, "estab")) { filterdata.opt.estab = 1; - return(1); + return (1); } LogPrintf(LogWARN, "ParseUdpOrTcp: estab is expected: %s\n", *argv); - return(0); + return (0); } if (argc > 0) LogPrintf(LogWARN, "ParseUdpOrTcp: bad src/dst port syntax: %s\n", *argv); - return(0); + return (0); } -char *opname[] = { "none", "eq", "gt", "lt" }; +char *opname[] = {"none", "eq", "gt", "lt"}; static int -Parse(argc, argv, ofp) -int argc; -char **argv; -struct filterent *ofp; +Parse(int argc, char **argv, struct filterent * ofp) { int action, proto; int val; @@ -272,7 +259,7 @@ struct filterent *ofp; val = strtol(*argv, &wp, 0); if (*argv == wp || val > MAXFILTERS) { LogPrintf(LogWARN, "Parse: invalid filter number.\n"); - return(0); + return (0); } if (val < 0) { for (val = 0; val < MAXFILTERS; val++) { @@ -280,13 +267,13 @@ struct filterent *ofp; ofp++; } LogPrintf(LogWARN, "Parse: filter cleared.\n"); - return(1); + return (1); } ofp += val; if (--argc == 0) { LogPrintf(LogWARN, "Parse: missing action.\n"); - return(0); + return (0); } argv++; @@ -299,47 +286,54 @@ struct filterent *ofp; action = A_DENY; } else if (STREQ(*argv, "clear")) { ofp->action = A_NONE; - return(1); + return (1); } else { LogPrintf(LogWARN, "Parse: bad action: %s\n", *argv); - return(0); + return (0); } fp->action = action; - argc--; argv++; + argc--; + argv++; if (fp->action == A_DENY) { if (STREQ(*argv, "host")) { fp->action |= A_UHOST; - argc--; argv++; + argc--; + argv++; } else if (STREQ(*argv, "port")) { fp->action |= A_UPORT; - argc--; argv++; + argc--; + argv++; } } - proto = ParseProto(argc, argv); if (proto == P_NONE) { if (ParseAddr(argc, argv, &fp->saddr, &fp->smask, &fp->swidth)) { - argc--; argv++; + argc--; + argv++; proto = ParseProto(argc, argv); if (proto == P_NONE) { if (ParseAddr(argc, argv, &fp->daddr, &fp->dmask, &fp->dwidth)) { - argc--; argv++; + argc--; + argv++; } proto = ParseProto(argc, argv); if (proto) { - argc--; argv++; + argc--; + argv++; } } else { - argc--; argv++; + argc--; + argv++; } } else { LogPrintf(LogWARN, "Parse: Address/protocol expected.\n"); - return(0); + return (0); } } else { - argc--; argv++; + argc--; + argv++; } val = 1; @@ -371,62 +365,46 @@ struct filterent *ofp; if (val) *ofp = *fp; - return(val); + return (val); } int -SetIfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetIfilter(struct cmdtab * list, int argc, char **argv) { if (argc > 0) { (void) Parse(argc, argv, ifilters); return 0; } - return -1; } int -SetOfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetOfilter(struct cmdtab * list, int argc, char **argv) { if (argc > 0) { (void) Parse(argc, argv, ofilters); return 0; } - return -1; } int -SetDfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetDfilter(struct cmdtab * list, int argc, char **argv) { if (argc > 0) { (void) Parse(argc, argv, dfilters); return 0; } - return -1; } int -SetAfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SetAfilter(struct cmdtab * list, int argc, char **argv) { if (argc > 0) { (void) Parse(argc, argv, afilters); return 0; } - return -1; } @@ -439,8 +417,7 @@ static char *actname[] = { }; static void -ShowFilter(fp) -struct filterent *fp; +ShowFilter(struct filterent * fp) { int n; @@ -457,10 +434,10 @@ struct filterent *fp; if (fp->opt.srcop) fprintf(VarTerm, " src %s %d", opname[fp->opt.srcop], - fp->opt.srcport); + fp->opt.srcport); if (fp->opt.dstop) fprintf(VarTerm, " dst %s %d", opname[fp->opt.dstop], - fp->opt.dstport); + fp->opt.dstport); if (fp->opt.estab) fprintf(VarTerm, " estab"); @@ -471,40 +448,28 @@ struct filterent *fp; } int -ShowIfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +ShowIfilter(struct cmdtab * list, int argc, char **argv) { ShowFilter(ifilters); return 0; } int -ShowOfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +ShowOfilter(struct cmdtab * list, int argc, char **argv) { ShowFilter(ofilters); return 0; } int -ShowDfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +ShowDfilter(struct cmdtab * list, int argc, char **argv) { ShowFilter(dfilters); return 0; } int -ShowAfilter(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +ShowAfilter(struct cmdtab * list, int argc, char **argv) { ShowFilter(afilters); return 0; diff --git a/usr.sbin/ppp/filter.h b/usr.sbin/ppp/filter.h index 9653560..d6417fc 100644 --- a/usr.sbin/ppp/filter.h +++ b/usr.sbin/ppp/filter.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: filter.h,v 1.7 1997/05/10 01:22:09 brian Exp $ + * $Id: filter.h,v 1.8 1997/06/09 03:27:20 brian Exp $ * * TODO: */ @@ -51,21 +51,21 @@ #define OP_LT 4 struct filterent { - int action; /* Filtering action */ - int swidth; /* Effective source address width */ + int action; /* Filtering action */ + int swidth; /* Effective source address width */ struct in_addr saddr; /* Source address */ struct in_addr smask; /* Source address mask */ - int dwidth; /* Effective destination address width */ + int dwidth; /* Effective destination address width */ struct in_addr daddr; /* Destination address */ struct in_addr dmask; /* Destination address mask */ - int proto; /* Protocol */ + int proto; /* Protocol */ struct { - short srcop; + short srcop; u_short srcport; - short dstop; + short dstop; u_short dstport; - int estab; - } opt; + int estab; + } opt; }; #define MAXFILTERS 20 @@ -79,5 +79,6 @@ struct filterent ofilters[MAXFILTERS]; struct filterent dfilters[MAXFILTERS]; struct filterent afilters[MAXFILTERS]; /* keep Alive packet filter */ -extern int ParseAddr(int, char **, struct in_addr *, struct in_addr *, int*); -#endif /* _FILTER_H_ */ +extern int ParseAddr(int, char **, struct in_addr *, struct in_addr *, int *); + +#endif /* _FILTER_H_ */ diff --git a/usr.sbin/ppp/fsm.c b/usr.sbin/ppp/fsm.c index eabbfcc..8ad1cfb 100644 --- a/usr.sbin/ppp/fsm.c +++ b/usr.sbin/ppp/fsm.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: fsm.c,v 1.14 1997/08/17 20:45:46 brian Exp $ + * $Id: fsm.c,v 1.15 1997/08/20 23:47:42 brian Exp $ * * TODO: * o Refer loglevel for log output @@ -33,10 +33,10 @@ #include "loadalias.h" #include "vars.h" -void FsmSendConfigReq(struct fsm *fp); -void FsmSendTerminateReq(struct fsm *fp); -void FsmInitRestartCounter(struct fsm *fp); -void FsmTimeout(struct fsm *fp); +void FsmSendConfigReq(struct fsm * fp); +void FsmSendTerminateReq(struct fsm * fp); +void FsmInitRestartCounter(struct fsm * fp); +void FsmTimeout(struct fsm * fp); char const *StateNames[] = { "Initial", "Starting", "Closed", "Stopped", "Closing", "Stopping", @@ -44,8 +44,7 @@ char const *StateNames[] = { }; static void -StoppedTimeout(fp) -struct fsm *fp; +StoppedTimeout(struct fsm * fp) { LogPrintf(fp->LogLevel, "Stopped timer expired\n"); if (modem != -1) @@ -55,8 +54,7 @@ struct fsm *fp; } void -FsmInit(fp) -struct fsm *fp; +FsmInit(struct fsm * fp) { LogPrintf(LogDEBUG, "FsmInit\n"); fp->state = ST_INITIAL; @@ -66,38 +64,32 @@ struct fsm *fp; } void -NewState(fp, new) -struct fsm *fp; -int new; +NewState(struct fsm * fp, int new) { LogPrintf(fp->LogLevel, "State change %s --> %s\n", - StateNames[fp->state], StateNames[new]); + StateNames[fp->state], StateNames[new]); if (fp->state == ST_STOPPED && fp->StoppedTimer.state == TIMER_RUNNING) - StopTimer(&fp->StoppedTimer); + StopTimer(&fp->StoppedTimer); fp->state = new; if ((new >= ST_INITIAL && new <= ST_STOPPED) || (new == ST_OPENED)) { StopTimer(&fp->FsmTimer); if (new == ST_STOPPED && fp->StoppedTimer.load) { fp->StoppedTimer.state = TIMER_STOPPED; fp->StoppedTimer.func = StoppedTimeout; - fp->StoppedTimer.arg = (void *)fp; + fp->StoppedTimer.arg = (void *) fp; StartTimer(&fp->StoppedTimer); } } } void -FsmOutput(fp, code, id, ptr, count) -struct fsm *fp; -u_int code, id; -u_char *ptr; -int count; +FsmOutput(struct fsm * fp, u_int code, u_int id, u_char * ptr, int count) { int plen; struct fsmheader lh; struct mbuf *bp; - plen = sizeof(struct fsmheader) + count; + plen = sizeof(struct fsmheader) + count; lh.code = code; lh.id = id; lh.length = htons(plen); @@ -110,12 +102,11 @@ int count; } void -FsmOpen(fp) -struct fsm *fp; +FsmOpen(struct fsm * fp) { switch (fp->state) { - case ST_INITIAL: - (fp->LayerStart)(fp); + case ST_INITIAL: + (fp->LayerStart) (fp); NewState(fp, ST_STARTING); break; case ST_STARTING: @@ -129,25 +120,24 @@ struct fsm *fp; NewState(fp, ST_REQSENT); } break; - case ST_STOPPED: /* XXX: restart option */ + case ST_STOPPED: /* XXX: restart option */ case ST_REQSENT: case ST_ACKRCVD: case ST_ACKSENT: - case ST_OPENED: /* XXX: restart option */ + case ST_OPENED: /* XXX: restart option */ break; - case ST_CLOSING: /* XXX: restart option */ - case ST_STOPPING: /* XXX: restart option */ + case ST_CLOSING: /* XXX: restart option */ + case ST_STOPPING: /* XXX: restart option */ NewState(fp, ST_STOPPING); break; } } void -FsmUp(fp) -struct fsm *fp; +FsmUp(struct fsm * fp) { switch (fp->state) { - case ST_INITIAL: + case ST_INITIAL: NewState(fp, ST_CLOSED); break; case ST_STARTING: @@ -162,16 +152,15 @@ struct fsm *fp; } void -FsmDown(fp) -struct fsm *fp; +FsmDown(struct fsm * fp) { switch (fp->state) { - case ST_CLOSED: - case ST_CLOSING: + case ST_CLOSED: + case ST_CLOSING: NewState(fp, ST_INITIAL); break; case ST_STOPPED: - (fp->LayerStart)(fp); + (fp->LayerStart) (fp); /* Fall into.. */ case ST_STOPPING: case ST_REQSENT: @@ -180,18 +169,17 @@ struct fsm *fp; NewState(fp, ST_STARTING); break; case ST_OPENED: - (fp->LayerDown)(fp); + (fp->LayerDown) (fp); NewState(fp, ST_STARTING); break; } } void -FsmClose(fp) -struct fsm *fp; +FsmClose(struct fsm * fp) { switch (fp->state) { - case ST_STARTING: + case ST_STARTING: NewState(fp, ST_INITIAL); break; case ST_STOPPED: @@ -201,7 +189,7 @@ struct fsm *fp; NewState(fp, ST_CLOSING); break; case ST_OPENED: - (fp->LayerDown)(fp); + (fp->LayerDown) (fp); /* Fall down */ case ST_REQSENT: case ST_ACKRCVD: @@ -217,11 +205,10 @@ struct fsm *fp; * Send functions */ void -FsmSendConfigReq(fp) -struct fsm *fp; +FsmSendConfigReq(struct fsm * fp) { if (--fp->maxconfig > 0) { - (fp->SendConfigReq)(fp); + (fp->SendConfigReq) (fp); StartTimer(&fp->FsmTimer); /* Start restart timer */ fp->restart--; /* Decrement restart counter */ } else { @@ -230,49 +217,45 @@ struct fsm *fp; } void -FsmSendTerminateReq(fp) -struct fsm *fp; +FsmSendTerminateReq(struct fsm * fp) { LogPrintf(fp->LogLevel, "SendTerminateReq.\n"); FsmOutput(fp, CODE_TERMREQ, fp->reqid++, NULL, 0); - (fp->SendTerminateReq)(fp); + (fp->SendTerminateReq) (fp); StartTimer(&fp->FsmTimer); /* Start restart timer */ fp->restart--; /* Decrement restart counter */ } static void -FsmSendConfigAck(fp, lhp, option, count) -struct fsm *fp; -struct fsmheader *lhp; -u_char *option; -int count; +FsmSendConfigAck(struct fsm * fp, + struct fsmheader * lhp, + u_char * option, + int count) { LogPrintf(fp->LogLevel, "SendConfigAck(%s)\n", StateNames[fp->state]); - (fp->DecodeConfig)(option, count, MODE_NOP); + (fp->DecodeConfig) (option, count, MODE_NOP); FsmOutput(fp, CODE_CONFIGACK, lhp->id, option, count); } static void -FsmSendConfigRej(fp, lhp, option, count) -struct fsm *fp; -struct fsmheader *lhp; -u_char *option; -int count; +FsmSendConfigRej(struct fsm * fp, + struct fsmheader * lhp, + u_char * option, + int count) { LogPrintf(fp->LogLevel, "SendConfigRej(%s)\n", StateNames[fp->state]); - (fp->DecodeConfig)(option, count, MODE_NOP); + (fp->DecodeConfig) (option, count, MODE_NOP); FsmOutput(fp, CODE_CONFIGREJ, lhp->id, option, count); } static void -FsmSendConfigNak(fp, lhp, option, count) -struct fsm *fp; -struct fsmheader *lhp; -u_char *option; -int count; +FsmSendConfigNak(struct fsm * fp, + struct fsmheader * lhp, + u_char * option, + int count) { LogPrintf(fp->LogLevel, "SendConfigNak(%s)\n", StateNames[fp->state]); - (fp->DecodeConfig)(option, count, MODE_NOP); + (fp->DecodeConfig) (option, count, MODE_NOP); FsmOutput(fp, CODE_CONFIGNAK, lhp->id, option, count); } @@ -280,13 +263,12 @@ int count; * Timeout actions */ void -FsmTimeout(fp) -struct fsm *fp; +FsmTimeout(struct fsm * fp) { if (fp->restart) { switch (fp->state) { - case ST_CLOSING: - case ST_STOPPING: + case ST_CLOSING: + case ST_STOPPING: FsmSendTerminateReq(fp); break; case ST_REQSENT: @@ -303,41 +285,38 @@ struct fsm *fp; switch (fp->state) { case ST_CLOSING: NewState(fp, ST_CLOSED); - (fp->LayerFinish)(fp); + (fp->LayerFinish) (fp); break; case ST_STOPPING: NewState(fp, ST_STOPPED); - (fp->LayerFinish)(fp); + (fp->LayerFinish) (fp); break; case ST_REQSENT: /* XXX: 3p */ case ST_ACKSENT: case ST_ACKRCVD: NewState(fp, ST_STOPPED); - (fp->LayerFinish)(fp); + (fp->LayerFinish) (fp); break; } } } void -FsmInitRestartCounter(fp) -struct fsm *fp; +FsmInitRestartCounter(struct fsm * fp) { StopTimer(&fp->FsmTimer); fp->FsmTimer.state = TIMER_STOPPED; fp->FsmTimer.func = FsmTimeout; - fp->FsmTimer.arg = (void *)fp; - (fp->InitRestartCounter)(fp); + fp->FsmTimer.arg = (void *) fp; + (fp->InitRestartCounter) (fp); } /* * Actions when receive packets */ void -FsmRecvConfigReq(fp, lhp, bp) /* RCR */ -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvConfigReq(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) +/* RCR */ { int plen, flen; int ackaction = 0; @@ -350,9 +329,8 @@ struct mbuf *bp; return; } - /* - * Check and process easy case + * Check and process easy case */ switch (fp->state) { case ST_INITIAL: @@ -361,7 +339,7 @@ struct mbuf *bp; pfree(bp); return; case ST_CLOSED: - (fp->SendTerminateAck)(fp); + (fp->SendTerminateAck) (fp); pfree(bp); return; case ST_CLOSING: @@ -371,14 +349,14 @@ struct mbuf *bp; return; } - (fp->DecodeConfig)(MBUF_CTOP(bp), flen, MODE_REQ); + (fp->DecodeConfig) (MBUF_CTOP(bp), flen, MODE_REQ); if (nakp == NakBuff && rejp == RejBuff) ackaction = 1; switch (fp->state) { case ST_OPENED: - (fp->LayerDown)(fp); + (fp->LayerDown) (fp); FsmSendConfigReq(fp); break; case ST_STOPPED: @@ -409,7 +387,7 @@ struct mbuf *bp; case ST_ACKRCVD: if (ackaction) { NewState(fp, ST_OPENED); - (fp->LayerUp)(fp); + (fp->LayerUp) (fp); } break; case ST_ACKSENT: @@ -421,15 +399,13 @@ struct mbuf *bp; } void -FsmRecvConfigAck(fp, lhp, bp) /* RCA */ -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvConfigAck(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) +/* RCA */ { switch (fp->state) { - case ST_CLOSED: - case ST_STOPPED: - (fp->SendTerminateAck)(fp); + case ST_CLOSED: + case ST_STOPPED: + (fp->SendTerminateAck) (fp); break; case ST_CLOSING: case ST_STOPPING: @@ -445,10 +421,10 @@ struct mbuf *bp; case ST_ACKSENT: FsmInitRestartCounter(fp); NewState(fp, ST_OPENED); - (fp->LayerUp)(fp); + (fp->LayerUp) (fp); break; case ST_OPENED: - (fp->LayerDown)(fp); + (fp->LayerDown) (fp); FsmSendConfigReq(fp); NewState(fp, ST_REQSENT); break; @@ -457,10 +433,8 @@ struct mbuf *bp; } void -FsmRecvConfigNak(fp, lhp, bp) /* RCN */ -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvConfigNak(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) +/* RCN */ { int plen, flen; @@ -472,7 +446,7 @@ struct mbuf *bp; } /* - * Check and process easy case + * Check and process easy case */ switch (fp->state) { case ST_INITIAL: @@ -482,7 +456,7 @@ struct mbuf *bp; return; case ST_CLOSED: case ST_STOPPED: - (fp->SendTerminateAck)(fp); + (fp->SendTerminateAck) (fp); pfree(bp); return; case ST_CLOSING: @@ -491,7 +465,7 @@ struct mbuf *bp; return; } - (fp->DecodeConfig)(MBUF_CTOP(bp), flen, MODE_NAK); + (fp->DecodeConfig) (MBUF_CTOP(bp), flen, MODE_NAK); switch (fp->state) { case ST_REQSENT: @@ -500,7 +474,7 @@ struct mbuf *bp; FsmSendConfigReq(fp); break; case ST_OPENED: - (fp->LayerDown)(fp); + (fp->LayerDown) (fp); /* Fall down */ case ST_ACKRCVD: FsmSendConfigReq(fp); @@ -512,14 +486,12 @@ struct mbuf *bp; } void -FsmRecvTermReq(fp, lhp, bp) /* RTR */ -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvTermReq(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) +/* RTR */ { switch (fp->state) { - case ST_INITIAL: - case ST_STARTING: + case ST_INITIAL: + case ST_STARTING: LogPrintf(fp->LogLevel, "Oops, RTR in %s\n", StateNames[fp->state]); break; case ST_CLOSED: @@ -527,16 +499,16 @@ struct mbuf *bp; case ST_CLOSING: case ST_STOPPING: case ST_REQSENT: - (fp->SendTerminateAck)(fp); + (fp->SendTerminateAck) (fp); break; case ST_ACKRCVD: case ST_ACKSENT: - (fp->SendTerminateAck)(fp); + (fp->SendTerminateAck) (fp); NewState(fp, ST_REQSENT); break; case ST_OPENED: - (fp->LayerDown)(fp); - (fp->SendTerminateAck)(fp); + (fp->LayerDown) (fp); + (fp->SendTerminateAck) (fp); StartTimer(&fp->FsmTimer); /* Start restart timer */ fp->restart = 0; NewState(fp, ST_STOPPING); @@ -546,25 +518,23 @@ struct mbuf *bp; } void -FsmRecvTermAck(fp, lhp, bp) /* RTA */ -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvTermAck(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) +/* RTA */ { switch (fp->state) { - case ST_CLOSING: + case ST_CLOSING: NewState(fp, ST_CLOSED); - (fp->LayerFinish)(fp); + (fp->LayerFinish) (fp); break; case ST_STOPPING: NewState(fp, ST_STOPPED); - (fp->LayerFinish)(fp); + (fp->LayerFinish) (fp); break; case ST_ACKRCVD: NewState(fp, ST_REQSENT); break; case ST_OPENED: - (fp->LayerDown)(fp); + (fp->LayerDown) (fp); FsmSendConfigReq(fp); NewState(fp, ST_REQSENT); break; @@ -573,10 +543,8 @@ struct mbuf *bp; } void -FsmRecvConfigRej(fp, lhp, bp) /* RCJ */ -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvConfigRej(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) +/* RCJ */ { int plen, flen; @@ -589,7 +557,7 @@ struct mbuf *bp; LogPrintf(fp->LogLevel, "RecvConfigRej.\n"); /* - * Check and process easy case + * Check and process easy case */ switch (fp->state) { case ST_INITIAL: @@ -599,7 +567,7 @@ struct mbuf *bp; return; case ST_CLOSED: case ST_STOPPED: - (fp->SendTerminateAck)(fp); + (fp->SendTerminateAck) (fp); pfree(bp); return; case ST_CLOSING: @@ -608,7 +576,7 @@ struct mbuf *bp; return; } - (fp->DecodeConfig)(MBUF_CTOP(bp), flen, MODE_REJ); + (fp->DecodeConfig) (MBUF_CTOP(bp), flen, MODE_REJ); switch (fp->state) { case ST_REQSENT: @@ -617,7 +585,7 @@ struct mbuf *bp; FsmSendConfigReq(fp); break; case ST_OPENED: - (fp->LayerDown)(fp); + (fp->LayerDown) (fp); /* Fall down */ case ST_ACKRCVD: FsmSendConfigReq(fp); @@ -628,24 +596,18 @@ struct mbuf *bp; } void -FsmRecvCodeRej(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvCodeRej(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { LogPrintf(fp->LogLevel, "RecvCodeRej\n"); pfree(bp); } void -FsmRecvProtoRej(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvProtoRej(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { u_short *sp, proto; - sp = (u_short *)MBUF_CTOP(bp); + sp = (u_short *) MBUF_CTOP(bp); proto = ntohs(*sp); LogPrintf(fp->LogLevel, "-- Protocol (%04x) was rejected.\n", proto); @@ -655,7 +617,7 @@ struct mbuf *bp; break; case PROTO_CCP: fp = &CcpFsm; - (fp->LayerFinish)(fp); + (fp->LayerFinish) (fp); switch (fp->state) { case ST_CLOSED: case ST_CLOSING: @@ -670,22 +632,18 @@ struct mbuf *bp; } void -FsmRecvEchoReq(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvEchoReq(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { u_char *cp; u_long *lp, magic; cp = MBUF_CTOP(bp); - lp = (u_long *)cp; + lp = (u_long *) cp; magic = ntohl(*lp); if (magic != LcpInfo.his_magic) { LogPrintf(LogERROR, "RecvEchoReq: his magic is bad!!\n"); /* XXX: We should send terminate request */ } - if (fp->state == ST_OPENED) { *lp = htonl(LcpInfo.want_magic); /* Insert local magic number */ LogPrintf(fp->LogLevel, "SendEchoRep(%s)\n", StateNames[fp->state]); @@ -695,24 +653,22 @@ struct mbuf *bp; } void -FsmRecvEchoRep(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvEchoRep(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { u_long *lp, magic; - lp = (u_long *)MBUF_CTOP(bp); + lp = (u_long *) MBUF_CTOP(bp); magic = ntohl(*lp); /* * Tolerate echo replies with either magic number */ if (magic != 0 && magic != LcpInfo.his_magic && magic != LcpInfo.want_magic) { LogPrintf(LogERROR, "RecvEchoRep: his magic is wrong! expect: %x got: %x\n", - LcpInfo.his_magic, magic); + LcpInfo.his_magic, magic); + /* - * XXX: We should send terminate request. But poor implementation - * may die as a result. + * XXX: We should send terminate request. But poor implementation may die + * as a result. */ } RecvEchoLqr(bp); @@ -720,40 +676,28 @@ struct mbuf *bp; } void -FsmRecvDiscReq(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvDiscReq(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { LogPrintf(fp->LogLevel, "RecvDiscReq\n"); pfree(bp); } void -FsmRecvIdent(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvIdent(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { LogPrintf(fp->LogLevel, "RecvIdent\n"); pfree(bp); } void -FsmRecvTimeRemain(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvTimeRemain(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { LogPrintf(fp->LogLevel, "RecvTimeRemain\n"); pfree(bp); } void -FsmRecvResetReq(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvResetReq(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { LogPrintf(fp->LogLevel, "RecvResetReq\n"); CcpRecvResetReq(fp); @@ -763,10 +707,7 @@ struct mbuf *bp; } void -FsmRecvResetAck(fp, lhp, bp) -struct fsm *fp; -struct fsmheader *lhp; -struct mbuf *bp; +FsmRecvResetAck(struct fsm * fp, struct fsmheader * lhp, struct mbuf * bp) { LogPrintf(fp->LogLevel, "RecvResetAck\n"); fp->reqid++; @@ -774,27 +715,25 @@ struct mbuf *bp; } struct fsmcodedesc FsmCodes[] = { - { FsmRecvConfigReq, "Configure Request", }, - { FsmRecvConfigAck, "Configure Ack", }, - { FsmRecvConfigNak, "Configure Nak", }, - { FsmRecvConfigRej, "Configure Reject", }, - { FsmRecvTermReq, "Terminate Request", }, - { FsmRecvTermAck, "Terminate Ack", }, - { FsmRecvCodeRej, "Code Reject", }, - { FsmRecvProtoRej, "Protocol Reject", }, - { FsmRecvEchoReq, "Echo Request", }, - { FsmRecvEchoRep, "Echo Reply", }, - { FsmRecvDiscReq, "Discard Request", }, - { FsmRecvIdent, "Ident", }, - { FsmRecvTimeRemain, "Time Remain", }, - { FsmRecvResetReq, "Reset Request", }, - { FsmRecvResetAck, "Reset Ack", }, + {FsmRecvConfigReq, "Configure Request",}, + {FsmRecvConfigAck, "Configure Ack",}, + {FsmRecvConfigNak, "Configure Nak",}, + {FsmRecvConfigRej, "Configure Reject",}, + {FsmRecvTermReq, "Terminate Request",}, + {FsmRecvTermAck, "Terminate Ack",}, + {FsmRecvCodeRej, "Code Reject",}, + {FsmRecvProtoRej, "Protocol Reject",}, + {FsmRecvEchoReq, "Echo Request",}, + {FsmRecvEchoRep, "Echo Reply",}, + {FsmRecvDiscReq, "Discard Request",}, + {FsmRecvIdent, "Ident",}, + {FsmRecvTimeRemain, "Time Remain",}, + {FsmRecvResetReq, "Reset Request",}, + {FsmRecvResetAck, "Reset Ack",}, }; void -FsmInput(fp, bp) -struct fsm *fp; -struct mbuf *bp; +FsmInput(struct fsm * fp, struct mbuf * bp) { int len; struct fsmheader *lhp; @@ -805,21 +744,20 @@ struct mbuf *bp; pfree(bp); return; } - lhp = (struct fsmheader *)MBUF_CTOP(bp); + lhp = (struct fsmheader *) MBUF_CTOP(bp); if (lhp->code == 0 || lhp->code > fp->max_code) { - pfree(bp); /* XXX: Should send code reject */ + pfree(bp); /* XXX: Should send code reject */ return; } - bp->offset += sizeof(struct fsmheader); bp->cnt -= sizeof(struct fsmheader); codep = FsmCodes + lhp->code - 1; LogPrintf(fp->LogLevel, "Received %s (%d) state = %s (%d)\n", - codep->name, lhp->id, StateNames[fp->state], fp->state); + codep->name, lhp->id, StateNames[fp->state], fp->state); if (LogIsKept(LogDEBUG)) LogMemory(); - (codep->action)(fp, lhp, bp); + (codep->action) (fp, lhp, bp); if (LogIsKept(LogDEBUG)) LogMemory(); } diff --git a/usr.sbin/ppp/fsm.h b/usr.sbin/ppp/fsm.h index 6fd4e48..792daa4 100644 --- a/usr.sbin/ppp/fsm.h +++ b/usr.sbin/ppp/fsm.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: fsm.h,v 1.8 1997/06/09 03:27:21 brian Exp $ + * $Id: fsm.h,v 1.9 1997/08/20 23:47:43 brian Exp $ * * TODO: */ @@ -53,46 +53,45 @@ #define OPEN_PASSIVE 1 struct fsm { - char *name; /* Name of protocol */ + char *name; /* Name of protocol */ u_short proto; /* Protocol number */ u_short max_code; - int open_mode; - int state; /* State of the machine */ - int reqid; /* Next request id */ - int restart; /* Restart counter value */ - int maxconfig; + int open_mode; + int state; /* State of the machine */ + int reqid; /* Next request id */ + int restart; /* Restart counter value */ + int maxconfig; - int reqcode; /* Request code sent */ + int reqcode; /* Request code sent */ struct pppTimer FsmTimer; /* Restart Timer */ /* * This timer times the ST_STOPPED state out after the given value - * (specified via "set stopped ..."). Although this isn't - * specified in the rfc, the rfc *does* say that "the application - * may use higher level timers to avoid deadlock". - * The StoppedTimer takes effect when the other side ABENDs rather - * than going into ST_ACKSENT (and sending the ACK), causing ppp to - * time out and drop into ST_STOPPED. At this point, nothing will - * change this state :-( + * (specified via "set stopped ..."). Although this isn't specified in the + * rfc, the rfc *does* say that "the application may use higher level + * timers to avoid deadlock". The StoppedTimer takes effect when the other + * side ABENDs rather than going into ST_ACKSENT (and sending the ACK), + * causing ppp to time out and drop into ST_STOPPED. At this point, + * nothing will change this state :-( */ struct pppTimer StoppedTimer; int LogLevel; - void (*LayerUp)(struct fsm *); - void (*LayerDown)(struct fsm *); - void (*LayerStart)(struct fsm *); - void (*LayerFinish)(struct fsm *); - void (*InitRestartCounter)(struct fsm *); - void (*SendConfigReq)(struct fsm *); - void (*SendTerminateReq)(struct fsm *); - void (*SendTerminateAck)(struct fsm *); - void (*DecodeConfig)(u_char *, int, int); + void (*LayerUp) (struct fsm *); + void (*LayerDown) (struct fsm *); + void (*LayerStart) (struct fsm *); + void (*LayerFinish) (struct fsm *); + void (*InitRestartCounter) (struct fsm *); + void (*SendConfigReq) (struct fsm *); + void (*SendTerminateReq) (struct fsm *); + void (*SendTerminateAck) (struct fsm *); + void (*DecodeConfig) (u_char *, int, int); }; struct fsmheader { - u_char code; /* Request code */ - u_char id; /* Identification */ - u_short length; /* Length of packet */ + u_char code; /* Request code */ + u_char id; /* Identification */ + u_short length; /* Length of packet */ }; #define CODE_CONFIGREQ 1 @@ -103,16 +102,16 @@ struct fsmheader { #define CODE_TERMACK 6 #define CODE_CODEREJ 7 #define CODE_PROTOREJ 8 -#define CODE_ECHOREQ 9 /* Used in LCP */ -#define CODE_ECHOREP 10 /* Used in LCP */ +#define CODE_ECHOREQ 9 /* Used in LCP */ +#define CODE_ECHOREP 10 /* Used in LCP */ #define CODE_DISCREQ 11 -#define CODE_IDENT 12 /* Used in LCP Extension */ -#define CODE_TIMEREM 13 /* Used in LCP Extension */ -#define CODE_RESETREQ 14 /* Used in CCP */ -#define CODE_RESETACK 15 /* Used in CCP */ +#define CODE_IDENT 12 /* Used in LCP Extension */ +#define CODE_TIMEREM 13 /* Used in LCP Extension */ +#define CODE_RESETREQ 14 /* Used in CCP */ +#define CODE_RESETACK 15 /* Used in CCP */ struct fsmcodedesc { - void (*action)(struct fsm *, struct fsmheader *, struct mbuf *); + void (*action) (struct fsm *, struct fsmheader *, struct mbuf *); char *name; }; @@ -142,8 +141,8 @@ extern void FsmRecvConfigAck(struct fsm *, struct fsmheader *, struct mbuf *); extern void FsmRecvConfigNak(struct fsm *, struct fsmheader *, struct mbuf *); extern void FsmRecvTermReq(struct fsm *, struct fsmheader *, struct mbuf *); extern void FsmRecvTermAck(struct fsm *, struct fsmheader *, struct mbuf *); -extern void FsmClose(struct fsm *fp); +extern void FsmClose(struct fsm * fp); extern struct fsm LcpFsm, IpcpFsm, CcpFsm; -#endif /* _FSM_H_ */ +#endif /* _FSM_H_ */ diff --git a/usr.sbin/ppp/hdlc.c b/usr.sbin/ppp/hdlc.c index 814981c..e9bb0f3 100644 --- a/usr.sbin/ppp/hdlc.c +++ b/usr.sbin/ppp/hdlc.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: hdlc.c,v 1.15 1997/05/26 00:43:59 brian Exp $ + * $Id: hdlc.c,v 1.16 1997/06/09 03:27:22 brian Exp $ * * TODO: */ @@ -33,11 +33,11 @@ #include "ccp.h" struct hdlcstat { - int badfcs; - int badaddr; - int badcommand; - int unknownproto; -} HdlcStat; + int badfcs; + int badaddr; + int badcommand; + int unknownproto; +} HdlcStat; static int ifOutPackets, ifOutOctets, ifOutLQRs; static int ifInPackets, ifInOctets; @@ -47,55 +47,80 @@ struct protostat { char *name; u_long in_count; u_long out_count; -} ProtocolStat[] = { - { PROTO_IP, "IP" }, - { PROTO_VJUNCOMP, "VJ_UNCOMP" }, - { PROTO_VJCOMP, "VJ_COMP" }, - { PROTO_COMPD, "COMPD" }, - { PROTO_LCP, "LCP" }, - { PROTO_IPCP, "IPCP" }, - { PROTO_CCP, "CCP" }, - { PROTO_PAP, "PAP" }, - { PROTO_LQR, "LQR" }, - { PROTO_CHAP, "CHAP" }, - { 0, "Others" }, +} ProtocolStat[] = { + + { + PROTO_IP, "IP" + }, + { + PROTO_VJUNCOMP, "VJ_UNCOMP" + }, + { + PROTO_VJCOMP, "VJ_COMP" + }, + { + PROTO_COMPD, "COMPD" + }, + { + PROTO_LCP, "LCP" + }, + { + PROTO_IPCP, "IPCP" + }, + { + PROTO_CCP, "CCP" + }, + { + PROTO_PAP, "PAP" + }, + { + PROTO_LQR, "LQR" + }, + { + PROTO_CHAP, "CHAP" + }, + { + 0, "Others" + }, }; static u_short const fcstab[256] = { -/* 00 */ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, -/* 08 */ 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, -/* 10 */ 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, -/* 18 */ 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, -/* 20 */ 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, -/* 28 */ 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, -/* 30 */ 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, -/* 38 */ 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, -/* 40 */ 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, -/* 48 */ 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, -/* 50 */ 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, -/* 58 */ 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, -/* 60 */ 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, -/* 68 */ 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, -/* 70 */ 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, -/* 78 */ 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, -/* 80 */ 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, -/* 88 */ 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, -/* 90 */ 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, -/* 98 */ 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, -/* a0 */ 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, -/* a8 */ 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, -/* b0 */ 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, -/* b8 */ 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, -/* c0 */ 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, -/* c8 */ 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, -/* d0 */ 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, -/* d8 */ 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, -/* e0 */ 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, -/* e8 */ 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, -/* f0 */ 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, -/* f8 */ 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 + /* 00 */ 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, + /* 08 */ 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, + /* 10 */ 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, + /* 18 */ 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, + /* 20 */ 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, + /* 28 */ 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, + /* 30 */ 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, + /* 38 */ 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, + /* 40 */ 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, + /* 48 */ 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, + /* 50 */ 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, + /* 58 */ 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, + /* 60 */ 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, + /* 68 */ 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, + /* 70 */ 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, + /* 78 */ 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, + /* 80 */ 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, + /* 88 */ 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, + /* 90 */ 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, + /* 98 */ 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, + /* a0 */ 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, + /* a8 */ 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, + /* b0 */ 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, + /* b8 */ 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, + /* c0 */ 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, + /* c8 */ 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, + /* d0 */ 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, + /* d8 */ 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, + /* e0 */ 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, + /* e8 */ 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, + /* f0 */ 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, + /* f8 */ 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 }; +u_char EscMap[33]; + void HdlcInit() { @@ -108,16 +133,16 @@ HdlcInit() * HDLC FCS computation. Read RFC 1171 Appendix B and CCITT X.25 section * 2.27 for further details. */ -inline u_short -HdlcFcs(u_short fcs, u_char *cp, int len) +inline u_short +HdlcFcs(u_short fcs, u_char * cp, int len) { while (len--) fcs = (fcs >> 8) ^ fcstab[(fcs ^ *cp++) & 0xff]; - return(fcs); + return (fcs); } void -HdlcOutput(int pri, u_short proto, struct mbuf *bp) +HdlcOutput(int pri, u_short proto, struct mbuf * bp) { struct mbuf *mhp, *mfcs; struct protostat *statp; @@ -143,8 +168,9 @@ HdlcOutput(int pri, u_short proto, struct mbuf *bp) *cp++ = HDLC_UI; mhp->cnt += 2; } + /* - * If possible, compress protocol field. + * If possible, compress protocol field. */ if (LcpInfo.his_protocomp && (proto & 0xff00) == 0) { *cp++ = proto; @@ -174,18 +200,16 @@ HdlcOutput(int pri, u_short proto, struct mbuf *bp) lqr->PeerInOctets = HisLqrSave.SaveInOctets; lqr->PeerOutLQRs = ++ifOutLQRs; LqrDump("LqrOutput", lqr); - LqrChangeOrder(lqr, (struct lqrdata *)(MBUF_CTOP(bp))); + LqrChangeOrder(lqr, (struct lqrdata *) (MBUF_CTOP(bp))); } - if (!DEV_IS_SYNC) { fcs = HdlcFcs(INITFCS, MBUF_CTOP(mhp), mhp->cnt); fcs = HdlcFcs(fcs, MBUF_CTOP(bp), bp->cnt); fcs = ~fcs; cp = MBUF_CTOP(mfcs); - *cp++ = fcs & 0377; /* Low byte first!! */ + *cp++ = fcs & 0377; /* Low byte first!! */ *cp++ = fcs >> 8; } - LogDumpBp(LogHDLC, "HdlcOutput", mhp); for (statp = ProtocolStat; statp->number; statp++) if (statp->number == proto) @@ -198,7 +222,7 @@ HdlcOutput(int pri, u_short proto, struct mbuf *bp) } void -DecodePacket(u_short proto, struct mbuf *bp) +DecodePacket(u_short proto, struct mbuf * bp) { u_char *cp; @@ -242,7 +266,7 @@ DecodePacket(u_short proto, struct mbuf *bp) bp->offset -= 2; bp->cnt += 2; cp = MBUF_CTOP(bp); - LcpSendProtoRej(cp, bp->cnt); + LcpSendProtoRej(cp, bp->cnt); HisLqrSave.SaveInDiscards++; HdlcStat.unknownproto++; pfree(bp); @@ -263,15 +287,15 @@ ReportProtStatus() do { statp++; fprintf(VarTerm, " %-9s: %8lu, %8lu", - statp->name, statp->in_count, statp->out_count); + statp->name, statp->in_count, statp->out_count); if (++cnt == 2) { fprintf(VarTerm, "\n"); cnt = 0; } } while (statp->number); if (cnt) - fprintf(VarTerm, "\n"); - return(1); + fprintf(VarTerm, "\n"); + return (1); } int @@ -282,7 +306,7 @@ ReportHdlcStatus() if (VarTerm) { fprintf(VarTerm, "HDLC level errors\n\n"); fprintf(VarTerm, "FCS: %u ADDR: %u COMMAND: %u PROTO: %u\n", - hp->badfcs, hp->badaddr, hp->badcommand, hp->unknownproto); + hp->badfcs, hp->badaddr, hp->badcommand, hp->unknownproto); } return 0; } @@ -297,14 +321,14 @@ HdlcErrorCheck() if (bcmp(hp, op, sizeof(laststat))) { LogPrintf(LogPHASE, "HDLC errors -> FCS: %u ADDR: %u COMD: %u PROTO: %u\n", - hp->badfcs - op->badfcs, hp->badaddr - op->badaddr, - hp->badcommand - op->badcommand, hp->unknownproto - op->unknownproto); + hp->badfcs - op->badfcs, hp->badaddr - op->badaddr, + hp->badcommand - op->badcommand, hp->unknownproto - op->unknownproto); } laststat = HdlcStat; } void -HdlcInput(struct mbuf *bp) +HdlcInput(struct mbuf * bp) { u_short fcs, proto; u_char *cp, addr, ctrl; @@ -318,7 +342,7 @@ HdlcInput(struct mbuf *bp) HisLqrSave.SaveInOctets += bp->cnt + 1; LogPrintf(LogDEBUG, "HdlcInput: fcs = %04x (%s)\n", - fcs, (fcs == GOODFCS)? "good" : "bad"); + fcs, (fcs == GOODFCS) ? "good" : "bad"); if (fcs != GOODFCS) { HisLqrSave.SaveInErrors++; LogPrintf(LogDEBUG, "HdlcInput: Bad FCS\n"); @@ -330,18 +354,18 @@ HdlcInput(struct mbuf *bp) bp->cnt -= 2; /* discard FCS part */ if (bp->cnt < 2) { /* XXX: raise this bar ? */ - pfree(bp); - return; + pfree(bp); + return; } - cp = MBUF_CTOP(bp); ifInPackets++; ifInOctets += bp->cnt; if (!LcpInfo.want_acfcomp) { + /* - * We expect that packet is not compressed. + * We expect that packet is not compressed. */ addr = *cp++; if (addr != HDLC_ADDR) { @@ -351,7 +375,6 @@ HdlcInput(struct mbuf *bp) pfree(bp); return; } - ctrl = *cp++; if (ctrl != HDLC_UI) { HisLqrSave.SaveInErrors++; @@ -363,20 +386,22 @@ HdlcInput(struct mbuf *bp) bp->offset += 2; bp->cnt -= 2; } else if (cp[0] == HDLC_ADDR && cp[1] == HDLC_UI) { + /* - * We can receive compressed packet, but peer still send - * uncompressed packet to me. + * We can receive compressed packet, but peer still send uncompressed + * packet to me. */ cp += 2; bp->offset += 2; bp->cnt -= 2; } - if (LcpInfo.want_protocomp) { proto = 0; cp--; do { - cp++; bp->offset++; bp->cnt--; + cp++; + bp->offset++; + bp->cnt--; proto = proto << 8; proto += *cp; } while (!(proto & 1)); diff --git a/usr.sbin/ppp/hdlc.h b/usr.sbin/ppp/hdlc.h index 4f3ff02..ebd52ad 100644 --- a/usr.sbin/ppp/hdlc.h +++ b/usr.sbin/ppp/hdlc.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: hdlc.h,v 1.8 1997/06/01 11:35:02 brian Exp $ + * $Id: hdlc.h,v 1.9 1997/06/09 03:27:22 brian Exp $ * * TODO: */ @@ -26,17 +26,17 @@ /* * Definition for Async HDLC */ -#define HDLC_SYN 0x7e /* SYNC character */ -#define HDLC_ESC 0x7d /* Escape character */ -#define HDLC_XOR 0x20 /* Modifier value */ +#define HDLC_SYN 0x7e /* SYNC character */ +#define HDLC_ESC 0x7d /* Escape character */ +#define HDLC_XOR 0x20 /* Modifier value */ #define HDLC_ADDR 0xff #define HDLC_UI 0x03 /* * Definition for HDLC Frame Check Sequence */ -#define INITFCS 0xffff /* Initial value for FCS computation */ -#define GOODFCS 0xf0b8 /* Good FCS value */ +#define INITFCS 0xffff /* Initial value for FCS computation */ +#define GOODFCS 0xf0b8 /* Good FCS value */ #define DEF_MRU 1500 #define MAX_MRU 2048 @@ -58,13 +58,14 @@ #define PRI_FAST 1 /* Fast (interractive) */ #define PRI_LINK 1 /* Urgent (LQR packets) */ -unsigned char EscMap[33]; +extern u_char EscMap[33]; void HdlcInit(void); void HdlcErrorCheck(void); -void HdlcInput(struct mbuf *bp); -void HdlcOutput(int pri, u_short proto, struct mbuf *bp); -void AsyncOutput(int pri, struct mbuf *bp, int proto); +void HdlcInput(struct mbuf * bp); +void HdlcOutput(int pri, u_short proto, struct mbuf * bp); +void AsyncOutput(int pri, struct mbuf * bp, int proto); u_short HdlcFcs(u_short, u_char *, int); void DecodePacket(u_short, struct mbuf *); + #endif diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c index b015a18..2dd4e2c 100644 --- a/usr.sbin/ppp/ip.c +++ b/usr.sbin/ppp/ip.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ip.c,v 1.21 1997/06/09 03:27:23 brian Exp $ + * $Id: ip.c,v 1.22 1997/06/16 21:20:00 brian Exp $ * * TODO: * o Return ICMP message for filterd packet @@ -44,7 +44,8 @@ extern void LcpClose(); static struct pppTimer IdleTimer; -static void IdleTimeout() +static void +IdleTimeout() { LogPrintf(LogPHASE, "Idle timer expired.\n"); reconnect(RECON_FALSE); @@ -58,7 +59,7 @@ static void IdleTimeout() void StartIdleTimer() { - if (!(mode & (MODE_DEDICATED|MODE_DDIAL))) { + if (!(mode & (MODE_DEDICATED | MODE_DDIAL))) { StopTimer(&IdleTimer); IdleTimer.func = IdleTimeout; IdleTimer.load = VarIdleTimeout * SECTICKS; @@ -86,15 +87,15 @@ StopIdleTimer() static void RestartIdleTimer() { - if (!(mode & (MODE_DEDICATED|MODE_DDIAL)) && ipKeepAlive ) { + if (!(mode & (MODE_DEDICATED | MODE_DDIAL)) && ipKeepAlive) { StartTimer(&IdleTimer); ipIdleSecs = 0; } } static u_short interactive_ports[32] = { - 544, 513, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 543, + 544, 513, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 543, }; #define INTERACTIVE(p) (interactive_ports[(p) & 0x1F] == (p)) @@ -103,23 +104,21 @@ static char *TcpFlags[] = { "FIN", "SYN", "RST", "PSH", "ACK", "URG", }; -static char *Direction[] = { "INP", "OUT", "OUT", "IN/OUT" }; -static struct filterent *Filters[] = { ifilters, ofilters, dfilters, afilters }; +static char *Direction[] = {"INP", "OUT", "OUT", "IN/OUT"}; +static struct filterent *Filters[] = {ifilters, ofilters, dfilters, afilters}; static int -PortMatch(op, pport, rport) -int op; -u_short pport, rport; +PortMatch(int op, u_short pport, u_short rport) { switch (op) { - case OP_EQ: - return(pport == rport); + case OP_EQ: + return (pport == rport); case OP_GT: - return(pport > rport); + return (pport > rport); case OP_LT: - return(pport < rport); + return (pport < rport); default: - return(0); + return (0); } } @@ -127,9 +126,7 @@ u_short pport, rport; * Check a packet against with defined filters */ static int -FilterCheck(pip, direction) -struct ip *pip; -int direction; +FilterCheck(struct ip * pip, int direction) { struct filterent *fp = Filters[direction]; int gotinfo, cproto, estab, n; @@ -144,78 +141,81 @@ int direction; sport = dport = 0; for (n = 0; n < MAXFILTERS; n++) { if (fp->action) { - /* permit fragments on in and out filter */ - if ((direction == FL_IN || direction == FL_OUT) && - (ntohs(pip->ip_off) & IP_OFFMASK) != 0) { - return(A_PERMIT); - } - LogPrintf(LogDEBUG, "rule = %d\n", n); + /* permit fragments on in and out filter */ + if ((direction == FL_IN || direction == FL_OUT) && + (ntohs(pip->ip_off) & IP_OFFMASK) != 0) { + return (A_PERMIT); + } + LogPrintf(LogDEBUG, "rule = %d\n", n); if ((pip->ip_src.s_addr & fp->smask.s_addr) == fp->saddr.s_addr && (pip->ip_dst.s_addr & fp->dmask.s_addr) == fp->daddr.s_addr) { if (fp->proto) { if (!gotinfo) { - ptop = (char *)pip + (pip->ip_hl << 2); + ptop = (char *) pip + (pip->ip_hl << 2); switch (pip->ip_p) { case IPPROTO_ICMP: - cproto = P_ICMP; ih = (struct icmp *)ptop; - sport = ih->icmp_type; estab = 1; + cproto = P_ICMP; + ih = (struct icmp *) ptop; + sport = ih->icmp_type; + estab = 1; break; case IPPROTO_UDP: - cproto = P_UDP; uh = (struct udphdr *)ptop; - sport = ntohs(uh->uh_sport); dport = ntohs(uh->uh_dport); + cproto = P_UDP; + uh = (struct udphdr *) ptop; + sport = ntohs(uh->uh_sport); + dport = ntohs(uh->uh_dport); estab = 1; break; case IPPROTO_TCP: - cproto = P_TCP; th = (struct tcphdr *)ptop; - sport = ntohs(th->th_sport); dport = ntohs(th->th_dport); + cproto = P_TCP; + th = (struct tcphdr *) ptop; + sport = ntohs(th->th_sport); + dport = ntohs(th->th_dport); estab = (th->th_flags & TH_ACK); - if (estab == 0) - LogPrintf(LogDEBUG, "flag = %02x, sport = %d, dport = %d\n", - th->th_flags, sport, dport); + if (estab == 0) + LogPrintf(LogDEBUG, "flag = %02x, sport = %d, dport = %d\n", + th->th_flags, sport, dport); break; default: - return(A_DENY); /* We'll block unknown type of packet */ + return (A_DENY);/* We'll block unknown type of packet */ } gotinfo = 1; - LogPrintf(LogDEBUG, "dir = %d, proto = %d, srcop = %d," - " dstop = %d, estab = %d\n", direction, cproto, - fp->opt.srcop, fp->opt.dstop, estab); + LogPrintf(LogDEBUG, "dir = %d, proto = %d, srcop = %d," + " dstop = %d, estab = %d\n", direction, cproto, + fp->opt.srcop, fp->opt.dstop, estab); } - LogPrintf(LogDEBUG, "check0: rule = %d, proto = %d, sport = %d," - " dport = %d\n", n, cproto, sport, dport); + " dport = %d\n", n, cproto, sport, dport); LogPrintf(LogDEBUG, "check0: action = %d\n", fp->action); if (cproto == fp->proto) { if ((fp->opt.srcop == OP_NONE || - PortMatch(fp->opt.srcop, sport, fp->opt.srcport)) - && + PortMatch(fp->opt.srcop, sport, fp->opt.srcport)) + && (fp->opt.dstop == OP_NONE || - PortMatch(fp->opt.dstop, dport, fp->opt.dstport)) - && + PortMatch(fp->opt.dstop, dport, fp->opt.dstport)) + && (fp->opt.estab == 0 || estab)) { - return(fp->action); + return (fp->action); } } } else { /* Address is mached. Make a decision. */ LogPrintf(LogDEBUG, "check1: action = %d\n", fp->action); - return(fp->action); + return (fp->action); } } } fp++; } - return(A_DENY); /* No rule is mached. Deny this packet */ + return (A_DENY); /* No rule is mached. Deny this packet */ } - return(A_PERMIT); /* No rule is given. Permit this packet */ + return (A_PERMIT); /* No rule is given. Permit this packet */ } static void -IcmpError(pip, code) -struct ip *pip; -int code; +IcmpError(struct ip * pip, int code) { #ifdef notdef struct mbuf *bp; @@ -234,10 +234,7 @@ int code; * For debugging aid. */ int -PacketCheck(cp, nb, direction) -char *cp; -int nb; -int direction; +PacketCheck(char *cp, int nb, int direction) { struct ip *pip; struct tcphdr *th; @@ -252,78 +249,76 @@ int direction; logit = LogIsKept(LogTCPIP); loglen = 0; - pip = (struct ip *)cp; + pip = (struct ip *) cp; if (logit && loglen < sizeof logbuf) { - snprintf(logbuf+loglen, sizeof logbuf - loglen, "%s ", - Direction[direction]); - loglen += strlen(logbuf+loglen); + snprintf(logbuf + loglen, sizeof logbuf - loglen, "%s ", + Direction[direction]); + loglen += strlen(logbuf + loglen); } - ptop = (cp + (pip->ip_hl << 2)); switch (pip->ip_p) { case IPPROTO_ICMP: if (logit && loglen < sizeof logbuf) { - icmph = (struct icmp *)ptop; - snprintf(logbuf+loglen, sizeof logbuf - loglen, - "ICMP: %s:%d ---> ", inet_ntoa(pip->ip_src), icmph->icmp_type); - loglen += strlen(logbuf+loglen); - snprintf(logbuf+loglen, sizeof logbuf - loglen, - "%s:%d", inet_ntoa(pip->ip_dst), icmph->icmp_type); - loglen += strlen(logbuf+loglen); + icmph = (struct icmp *) ptop; + snprintf(logbuf + loglen, sizeof logbuf - loglen, + "ICMP: %s:%d ---> ", inet_ntoa(pip->ip_src), icmph->icmp_type); + loglen += strlen(logbuf + loglen); + snprintf(logbuf + loglen, sizeof logbuf - loglen, + "%s:%d", inet_ntoa(pip->ip_dst), icmph->icmp_type); + loglen += strlen(logbuf + loglen); } break; case IPPROTO_UDP: if (logit && loglen < sizeof logbuf) { - uh = (struct udphdr *)ptop; - snprintf(logbuf+loglen, sizeof logbuf - loglen, - "UDP: %s:%d ---> ", inet_ntoa(pip->ip_src), ntohs(uh->uh_sport)); - loglen += strlen(logbuf+loglen); - snprintf(logbuf+loglen, sizeof logbuf - loglen, - "%s:%d", inet_ntoa(pip->ip_dst), ntohs(uh->uh_dport)); - loglen += strlen(logbuf+loglen); + uh = (struct udphdr *) ptop; + snprintf(logbuf + loglen, sizeof logbuf - loglen, + "UDP: %s:%d ---> ", inet_ntoa(pip->ip_src), ntohs(uh->uh_sport)); + loglen += strlen(logbuf + loglen); + snprintf(logbuf + loglen, sizeof logbuf - loglen, + "%s:%d", inet_ntoa(pip->ip_dst), ntohs(uh->uh_dport)); + loglen += strlen(logbuf + loglen); } break; case IPPROTO_TCP: - th = (struct tcphdr *)ptop; + th = (struct tcphdr *) ptop; if (pip->ip_tos == IPTOS_LOWDELAY) pri = PRI_FAST; else if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0) { if (INTERACTIVE(ntohs(th->th_sport)) || INTERACTIVE(ntohs(th->th_dport))) - pri = PRI_FAST; + pri = PRI_FAST; } - if (logit && loglen < sizeof logbuf) { len = ntohs(pip->ip_len) - (pip->ip_hl << 2) - (th->th_off << 2); - snprintf(logbuf+loglen, sizeof logbuf - loglen, - "TCP: %s:%d ---> ", inet_ntoa(pip->ip_src), ntohs(th->th_sport)); - loglen += strlen(logbuf+loglen); - snprintf(logbuf+loglen, sizeof logbuf - loglen, - "%s:%d", inet_ntoa(pip->ip_dst), ntohs(th->th_dport)); - loglen += strlen(logbuf+loglen); + snprintf(logbuf + loglen, sizeof logbuf - loglen, + "TCP: %s:%d ---> ", inet_ntoa(pip->ip_src), ntohs(th->th_sport)); + loglen += strlen(logbuf + loglen); + snprintf(logbuf + loglen, sizeof logbuf - loglen, + "%s:%d", inet_ntoa(pip->ip_dst), ntohs(th->th_dport)); + loglen += strlen(logbuf + loglen); n = 0; for (mask = TH_FIN; mask != 0x40; mask <<= 1) { if (th->th_flags & mask) { - snprintf(logbuf+loglen, sizeof logbuf - loglen, " %s", TcpFlags[n]); - loglen += strlen(logbuf+loglen); - } + snprintf(logbuf + loglen, sizeof logbuf - loglen, " %s", TcpFlags[n]); + loglen += strlen(logbuf + loglen); + } n++; } - snprintf(logbuf+loglen, sizeof logbuf - loglen, - " seq:%x ack:%x (%d/%d)", - ntohl(th->th_seq), ntohl(th->th_ack), len, nb); - loglen += strlen(logbuf+loglen); + snprintf(logbuf + loglen, sizeof logbuf - loglen, + " seq:%x ack:%x (%d/%d)", + ntohl(th->th_seq), ntohl(th->th_ack), len, nb); + loglen += strlen(logbuf + loglen); if ((th->th_flags & TH_SYN) && nb > 40) { - u_short *sp; + u_short *sp; ptop += 20; - sp = (u_short *)ptop; + sp = (u_short *) ptop; if (ntohs(sp[0]) == 0x0204) { - snprintf(logbuf+loglen, sizeof logbuf - loglen, - " MSS = %d", ntohs(sp[1])); - loglen += strlen(logbuf+loglen); - } + snprintf(logbuf + loglen, sizeof logbuf - loglen, + " MSS = %d", ntohs(sp[1])); + loglen += strlen(logbuf + loglen); + } } } break; @@ -331,25 +326,25 @@ int direction; if (logit) LogPrintf(LogTCPIP, "%s\n", logbuf); - + if ((FilterCheck(pip, direction) & A_DENY)) { LogPrintf(LogDEBUG, "blocked.\n"); - if (direction == 0) IcmpError(pip, pri); - return(-1); + if (direction == 0) + IcmpError(pip, pri); + return (-1); } else { - if ( FilterCheck(pip, FL_KEEP ) & A_DENY ) { /* Check Keep Alive filter */ - ipKeepAlive = FALSE; + if (FilterCheck(pip, FL_KEEP) & A_DENY) { /* Check Keep Alive filter */ + ipKeepAlive = FALSE; } else { - ipKeepAlive = TRUE; + ipKeepAlive = TRUE; } - return(pri); + return (pri); } } void -IpInput(bp) -struct mbuf *bp; /* IN: Pointer to IP pakcet */ -{ +IpInput(struct mbuf * bp) +{ /* IN: Pointer to IP pakcet */ u_char *cp; struct mbuf *wp; int nb, nw; @@ -357,7 +352,7 @@ struct mbuf *bp; /* IN: Pointer to IP pakcet */ cp = tunbuff; nb = 0; - for (wp = bp; wp; wp = wp->next) { /* Copy to contiguous region */ + for (wp = bp; wp; wp = wp->next) { /* Copy to contiguous region */ bcopy(MBUF_CTOP(wp), cp, wp->cnt); cp += wp->cnt; nb += wp->cnt; @@ -375,51 +370,44 @@ struct mbuf *bp; /* IN: Pointer to IP pakcet */ pfree(bp); return; } - if (iresult == PKT_ALIAS_OK - || iresult == PKT_ALIAS_FOUND_HEADER_FRAGMENT) { - if ( PacketCheck(tunbuff, nb, FL_IN ) < 0) { - pfree(bp); - return; + || iresult == PKT_ALIAS_FOUND_HEADER_FRAGMENT) { + if (PacketCheck(tunbuff, nb, FL_IN) < 0) { + pfree(bp); + return; } - ipInOctets += nb; nb = ntohs(((struct ip *) tunbuff)->ip_len); nw = write(tun_out, tunbuff, nb); if (nw != nb) - LogPrintf(LogERROR, "IpInput: wrote %d, got %d\n", nb, nw); + LogPrintf(LogERROR, "IpInput: wrote %d, got %d\n", nb, nw); if (iresult == PKT_ALIAS_FOUND_HEADER_FRAGMENT) { - while ((fptr = VarGetNextFragmentPtr(tunbuff)) != NULL) { - VarFragmentAliasIn(tunbuff, fptr); - nb = ntohs(((struct ip *) fptr)->ip_len); - nw = write(tun_out, fptr, nb); - if (nw != nb) - LogPrintf(LogERROR, "IpInput: wrote %d, got %d\n", nb, nw); - free(fptr); - } + while ((fptr = VarPacketAliasGetFragment(tunbuff)) != NULL) { + VarPacketAliasFragmentIn(tunbuff, fptr); + nb = ntohs(((struct ip *) fptr)->ip_len); + nw = write(tun_out, fptr, nb); + if (nw != nb) + LogPrintf(LogERROR, "IpInput: wrote %d, got %d\n", nb, nw); + free(fptr); + } } - } - else if (iresult == PKT_ALIAS_UNRESOLVED_FRAGMENT) { + } else if (iresult == PKT_ALIAS_UNRESOLVED_FRAGMENT) { nb = ntohs(((struct ip *) tunbuff)->ip_len); fptr = malloc(nb); if (fptr == NULL) - LogPrintf(LogALERT, "IpInput: Cannot allocate memory for fragment\n"); + LogPrintf(LogALERT, "IpInput: Cannot allocate memory for fragment\n"); else { - memcpy(fptr, tunbuff, nb); - VarSaveFragmentPtr(fptr); + memcpy(fptr, tunbuff, nb); + VarPacketAliasSaveFragment(fptr); } } - } - else - { /* no aliasing */ - if ( PacketCheck(tunbuff, nb, FL_IN ) < 0) - { + } else { /* no aliasing */ + if (PacketCheck(tunbuff, nb, FL_IN) < 0) { pfree(bp); return; } - ipInOctets += nb; nw = write(tun_out, tunbuff, nb); if (nw != nb) @@ -430,13 +418,10 @@ struct mbuf *bp; /* IN: Pointer to IP pakcet */ RestartIdleTimer(); } -static struct mqueue IpOutputQueues[PRI_FAST+1]; +static struct mqueue IpOutputQueues[PRI_FAST + 1]; void -IpEnqueue(pri, ptr, count) -int pri; -char *ptr; -int count; +IpEnqueue(int pri, char *ptr, int count) { struct mbuf *bp; @@ -449,14 +434,15 @@ int IsIpEnqueued() { struct mqueue *queue; - int exist = FALSE; + int exist = FALSE; + for (queue = &IpOutputQueues[PRI_FAST]; queue >= IpOutputQueues; queue--) { - if ( queue->qlen > 0 ) { - exist = TRUE; - break; - } + if (queue->qlen > 0) { + exist = TRUE; + break; + } } - return( exist ); + return (exist); } void @@ -477,7 +463,7 @@ IpStartOutput() RestartIdleTimer(); ipOutOctets += cnt; break; - } + } } } } diff --git a/usr.sbin/ppp/ip.h b/usr.sbin/ppp/ip.h index ab4b4a0..a96df2d 100644 --- a/usr.sbin/ppp/ip.h +++ b/usr.sbin/ppp/ip.h @@ -17,13 +17,14 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ip.h,v 1.3 1997/02/22 16:10:19 peter Exp $ + * $Id: ip.h,v 1.4 1997/06/09 03:27:23 brian Exp $ * */ #ifndef _IP_H_ #define _IP_H_ extern void IpStartOutput(void); -extern int PacketCheck(char *, int , int); +extern int PacketCheck(char *, int, int); extern void IpEnqueue(int, char *, int); + #endif diff --git a/usr.sbin/ppp/ipcp.c b/usr.sbin/ppp/ipcp.c index 4480a20..3ee1a59 100644 --- a/usr.sbin/ppp/ipcp.c +++ b/usr.sbin/ppp/ipcp.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ipcp.c,v 1.24 1997/08/19 01:10:20 brian Exp $ + * $Id: ipcp.c,v 1.25 1997/08/20 23:47:44 brian Exp $ * * TODO: * o More RFC1772 backwoard compatibility @@ -48,6 +48,7 @@ int HaveTriggerAddress; #ifndef NOMSEXT struct in_addr ns_entries[2], nbns_entries[2]; + #endif static void IpcpSendConfigReq(struct fsm *); @@ -75,8 +76,8 @@ struct fsm IpcpFsm = { 0, 0, 0, 0, - { 0, 0, 0, NULL, NULL, NULL }, - { 0, 0, 0, NULL, NULL, NULL }, + {0, 0, 0, NULL, NULL, NULL}, + {0, 0, 0, NULL, NULL, NULL}, LogIPCP, IpcpLayerUp, @@ -132,19 +133,19 @@ ReportIpcpStatus() return 1; fprintf(VarTerm, "%s [%s]\n", fp->name, StateNames[fp->state]); fprintf(VarTerm, " his side: %s, %lx\n", - inet_ntoa(icp->his_ipaddr), icp->his_compproto); + inet_ntoa(icp->his_ipaddr), icp->his_compproto); fprintf(VarTerm, " my side: %s, %lx\n", - inet_ntoa(icp->want_ipaddr), icp->want_compproto); + inet_ntoa(icp->want_ipaddr), icp->want_compproto); fprintf(VarTerm, "connected: %d secs, idle: %d secs\n\n", ipConnectSecs, ipIdleSecs); fprintf(VarTerm, "Defaults:\n"); fprintf(VarTerm, " My Address: %s/%d\n", - inet_ntoa(DefMyAddress.ipaddr), DefMyAddress.width); + inet_ntoa(DefMyAddress.ipaddr), DefMyAddress.width); fprintf(VarTerm, " His Address: %s/%d\n", - inet_ntoa(DefHisAddress.ipaddr), DefHisAddress.width); + inet_ntoa(DefHisAddress.ipaddr), DefHisAddress.width); if (HaveTriggerAddress) - fprintf(VarTerm, " Negotiation(trigger): %s\n", inet_ntoa(TriggerAddress)); + fprintf(VarTerm, " Negotiation(trigger): %s\n", inet_ntoa(TriggerAddress)); else - fprintf(VarTerm, " Negotiation(trigger): MYADDR\n"); + fprintf(VarTerm, " Negotiation(trigger): MYADDR\n"); return 0; } @@ -160,10 +161,10 @@ IpcpDefAddress() TriggerAddress.s_addr = 0; HaveTriggerAddress = 0; if (gethostname(name, sizeof(name)) == 0) { - hp = gethostbyname(name); - if (hp && hp->h_addrtype == AF_INET) { - bcopy(hp->h_addr, (char *)&DefMyAddress.ipaddr.s_addr, hp->h_length); - } + hp = gethostbyname(name); + if (hp && hp->h_addrtype == AF_INET) { + bcopy(hp->h_addr, (char *) &DefMyAddress.ipaddr.s_addr, hp->h_length); + } } } @@ -182,16 +183,14 @@ IpcpInit() } /* - * Some implementation of PPP are: - * Starting a negotiaion by require sending *special* value as my address, - * even though standard of PPP is defined full negotiation based. - * (e.g. "0.0.0.0" or Not "0.0.0.0") + * Some implementation of PPP are: Starting a negotiaion by require sending + * *special* value as my address, even though standard of PPP is defined + * full negotiation based. (e.g. "0.0.0.0" or Not "0.0.0.0") */ if (HaveTriggerAddress) { icp->want_ipaddr.s_addr = TriggerAddress.s_addr; LogPrintf(LogIPCP, "Using trigger address %s\n", inet_ntoa(TriggerAddress)); } - if (Enabled(ConfVjcomp)) icp->want_compproto = (PROTO_VJCOMP << 16) | ((MAX_STATES - 1) << 8); else @@ -201,16 +200,14 @@ IpcpInit() } static void -IpcpInitRestartCounter(fp) -struct fsm *fp; +IpcpInitRestartCounter(struct fsm * fp) { fp->FsmTimer.load = VarRetryTimeout * SECTICKS; fp->restart = 5; } static void -IpcpSendConfigReq(fp) -struct fsm *fp; +IpcpSendConfigReq(struct fsm * fp) { u_char *cp; struct ipcpstate *icp = &IpcpInfo; @@ -229,30 +226,26 @@ struct fsm *fp; } static void -IpcpSendTerminateReq(fp) -struct fsm *fp; +IpcpSendTerminateReq(struct fsm * fp) { /* XXX: No code yet */ } static void -IpcpSendTerminateAck(fp) -struct fsm *fp; +IpcpSendTerminateAck(struct fsm * fp) { LogPrintf(LogIPCP, "IpcpSendTerminateAck\n"); FsmOutput(fp, CODE_TERMACK, fp->reqid++, NULL, 0); } static void -IpcpLayerStart(fp) -struct fsm *fp; +IpcpLayerStart(struct fsm * fp) { LogPrintf(LogIPCP, "IpcpLayerStart.\n"); } static void -IpcpLayerFinish(fp) -struct fsm *fp; +IpcpLayerFinish(struct fsm * fp) { LogPrintf(LogIPCP, "IpcpLayerFinish.\n"); reconnect(RECON_FALSE); @@ -261,8 +254,7 @@ struct fsm *fp; } static void -IpcpLayerDown(fp) -struct fsm *fp; +IpcpLayerDown(struct fsm * fp) { LogPrintf(LogIPCP, "IpcpLayerDown.\n"); StopTimer(&IpcpReportTimer); @@ -272,24 +264,23 @@ struct fsm *fp; * Called when IPCP has reached to OPEN state */ static void -IpcpLayerUp(fp) -struct fsm *fp; +IpcpLayerUp(struct fsm * fp) { char tbuff[100]; Prompt(); LogPrintf(LogIPCP, "IpcpLayerUp(%d).\n", fp->state); - snprintf(tbuff, sizeof(tbuff), "myaddr = %s ", - inet_ntoa(IpcpInfo.want_ipaddr)); + snprintf(tbuff, sizeof(tbuff), "myaddr = %s ", + inet_ntoa(IpcpInfo.want_ipaddr)); LogPrintf(LogIsKept(LogIPCP) ? LogIPCP : LogLINK, " %s hisaddr = %s\n", - tbuff, inet_ntoa(IpcpInfo.his_ipaddr)); + tbuff, inet_ntoa(IpcpInfo.his_ipaddr)); if (OsSetIpaddress(IpcpInfo.want_ipaddr, IpcpInfo.his_ipaddr, ifnetmask) < 0) { if (VarTerm) LogPrintf(LogERROR, "IpcpLayerUp: unable to set ip address\n"); return; } if (mode & MODE_ALIAS) - VarSetPacketAliasAddress(IpcpInfo.want_ipaddr); + VarPacketAliasSetAddress(IpcpInfo.want_ipaddr); OsLinkup(); IpcpStartReport(); StartIdleTimer(); @@ -309,24 +300,19 @@ IpcpOpen() } static int -AcceptableAddr(prange, ipaddr) -struct in_range *prange; -struct in_addr ipaddr; +AcceptableAddr(struct in_range * prange, struct in_addr ipaddr) { LogPrintf(LogDEBUG, "requested = %x ", htonl(ipaddr.s_addr)); LogPrintf(LogDEBUG, "range = %x", htonl(prange->ipaddr.s_addr)); LogPrintf(LogDEBUG, "/%x\n", htonl(prange->mask.s_addr)); LogPrintf(LogDEBUG, "%x, %x\n", htonl(prange->ipaddr.s_addr & prange-> - mask.s_addr), htonl(ipaddr.s_addr & prange->mask.s_addr)); + mask.s_addr), htonl(ipaddr.s_addr & prange->mask.s_addr)); return (prange->ipaddr.s_addr & prange->mask.s_addr) == - (ipaddr.s_addr & prange->mask.s_addr) && ipaddr.s_addr; + (ipaddr.s_addr & prange->mask.s_addr) && ipaddr.s_addr; } static void -IpcpDecodeConfig(cp, plen, mode) -u_char *cp; -int plen; -int mode; +IpcpDecodeConfig(u_char * cp, int plen, int mode) { int type, length; u_long *lp, compproto; @@ -351,21 +337,22 @@ int mode; switch (type) { case TY_IPADDR: /* RFC1332 */ - lp = (u_long *)(cp + 2); + lp = (u_long *) (cp + 2); ipaddr.s_addr = *lp; LogPrintf(LogIPCP, "%s %s\n", tbuff, inet_ntoa(ipaddr)); switch (mode) { case MODE_REQ: if (!AcceptableAddr(&DefHisAddress, ipaddr)) { - /* - * If destination address is not acceptable, insist to use - * what we want to use. - */ + + /* + * If destination address is not acceptable, insist to use what we + * want to use. + */ bcopy(cp, nakp, 2); - bcopy(&IpcpInfo.his_ipaddr.s_addr, nakp+2, length); - nakp += length; - break; + bcopy(&IpcpInfo.his_ipaddr.s_addr, nakp + 2, length); + nakp += length; + break; } IpcpInfo.his_ipaddr = ipaddr; @@ -374,9 +361,10 @@ int mode; break; case MODE_NAK: if (AcceptableAddr(&DefMyAddress, ipaddr)) { - /* - * Use address suggested by peer. - */ + + /* + * Use address suggested by peer. + */ snprintf(tbuff2, sizeof(tbuff2), "%s changing address: %s ", tbuff, inet_ntoa(IpcpInfo.want_ipaddr)); LogPrintf(LogIPCP, "%s --> %s\n", tbuff2, inet_ntoa(ipaddr)); IpcpInfo.want_ipaddr = ipaddr; @@ -388,7 +376,7 @@ int mode; } break; case TY_COMPPROTO: - lp = (u_long *)(cp + 2); + lp = (u_long *) (cp + 2); compproto = htonl(*lp); LogPrintf(LogIPCP, "%s %08x\n", tbuff, compproto); @@ -398,9 +386,9 @@ int mode; bcopy(cp, rejp, length); rejp += length; } else { - pcomp = (struct compreq *)(cp + 2); + pcomp = (struct compreq *) (cp + 2); switch (length) { - case 4: /* RFC1172 */ + case 4: /* RFC1172 */ if (ntohs(pcomp->proto) == PROTO_VJCOMP) { LogPrintf(LogWARN, "Peer is speaking RFC1172 compression protocol !\n"); IpcpInfo.heis1172 = 1; @@ -414,9 +402,9 @@ int mode; nakp += length; } break; - case 6: /* RFC1332 */ + case 6: /* RFC1332 */ if (ntohs(pcomp->proto) == PROTO_VJCOMP - && pcomp->slots < MAX_STATES && pcomp->slots > 2) { + && pcomp->slots < MAX_STATES && pcomp->slots > 2) { IpcpInfo.his_compproto = compproto; IpcpInfo.heis1172 = 0; bcopy(cp, ackp, length); @@ -439,7 +427,7 @@ int mode; break; case MODE_NAK: LogPrintf(LogIPCP, "%s changing compproto: %08x --> %08x\n", - tbuff, IpcpInfo.want_compproto, compproto); + tbuff, IpcpInfo.want_compproto, compproto); IpcpInfo.want_compproto = compproto; break; case MODE_REJ: @@ -447,10 +435,10 @@ int mode; break; } break; - case TY_IPADDRS: /* RFC1172 */ - lp = (u_long *)(cp + 2); + case TY_IPADDRS: /* RFC1172 */ + lp = (u_long *) (cp + 2); ipaddr.s_addr = *lp; - lp = (u_long *)(cp + 6); + lp = (u_long *) (cp + 6); dstipaddr.s_addr = *lp; LogPrintf(LogIPCP, "%s %s, ", tbuff, inet_ntoa(ipaddr)); LogPrintf(LogIPCP, "%s\n", inet_ntoa(dstipaddr)); @@ -464,7 +452,7 @@ int mode; break; case MODE_NAK: LogPrintf(LogIPCP, "%s changing address: %s ", - tbuff, inet_ntoa(IpcpInfo.want_ipaddr)); + tbuff, inet_ntoa(IpcpInfo.want_ipaddr)); LogPrintf(LogIPCP, "--> %s\n", inet_ntoa(ipaddr)); IpcpInfo.want_ipaddr = ipaddr; IpcpInfo.his_ipaddr = dstipaddr; @@ -475,95 +463,95 @@ int mode; } break; - /* - * MS extensions for MS's PPP - */ + /* + * MS extensions for MS's PPP + */ #ifndef NOMSEXT - case TY_PRIMARY_DNS: /* MS PPP DNS negotiation hack */ + case TY_PRIMARY_DNS: /* MS PPP DNS negotiation hack */ case TY_SECONDARY_DNS: - if( !Enabled( ConfMSExt ) ) { + if (!Enabled(ConfMSExt)) { LogPrintf(LogIPCP, "MS NS req - rejected - msext disabled\n"); - IpcpInfo.my_reject |= ( 1 << type ); + IpcpInfo.my_reject |= (1 << type); bcopy(cp, rejp, length); rejp += length; break; } - switch( mode ){ + switch (mode) { case MODE_REQ: - lp = (u_long *)(cp + 2); + lp = (u_long *) (cp + 2); dnsstuff.s_addr = *lp; - ms_info_req.s_addr = ns_entries[((type - TY_PRIMARY_DNS)?1:0)].s_addr; - if( dnsstuff.s_addr != ms_info_req.s_addr ) - { + ms_info_req.s_addr = ns_entries[((type - TY_PRIMARY_DNS) ? 1 : 0)].s_addr; + if (dnsstuff.s_addr != ms_info_req.s_addr) { + /* - So the client has got the DNS stuff wrong (first request) - so well tell 'em how it is - */ - bcopy( cp, nakp, 2 ); /* copy first two (type/length) */ - LogPrintf( LogIPCP, "MS NS req %d:%s->%s - nak\n", - type, - inet_ntoa( dnsstuff ), - inet_ntoa( ms_info_req )); - bcopy( &ms_info_req, nakp+2, length ); + * So the client has got the DNS stuff wrong (first request) so + * well tell 'em how it is + */ + bcopy(cp, nakp, 2); /* copy first two (type/length) */ + LogPrintf(LogIPCP, "MS NS req %d:%s->%s - nak\n", + type, + inet_ntoa(dnsstuff), + inet_ntoa(ms_info_req)); + bcopy(&ms_info_req, nakp + 2, length); nakp += length; break; } - /* - Otherwise they have it right (this time) so we send - a ack packet back confirming it... end of story - */ - LogPrintf( LogIPCP, "MS NS req %d:%s ok - ack\n", - type, - inet_ntoa( ms_info_req )); - bcopy( cp, ackp, length ); + + /* + * Otherwise they have it right (this time) so we send a ack packet + * back confirming it... end of story + */ + LogPrintf(LogIPCP, "MS NS req %d:%s ok - ack\n", + type, + inet_ntoa(ms_info_req)); + bcopy(cp, ackp, length); ackp += length; break; - case MODE_NAK: /* what does this mean?? */ - LogPrintf(LogIPCP, "MS NS req %d - NAK??\n", type ); + case MODE_NAK: /* what does this mean?? */ + LogPrintf(LogIPCP, "MS NS req %d - NAK??\n", type); break; - case MODE_REJ: /* confused?? me to :) */ - LogPrintf(LogIPCP, "MS NS req %d - REJ??\n", type ); + case MODE_REJ: /* confused?? me to :) */ + LogPrintf(LogIPCP, "MS NS req %d - REJ??\n", type); break; } break; - case TY_PRIMARY_NBNS: /* MS PPP NetBIOS nameserver hack */ + case TY_PRIMARY_NBNS: /* MS PPP NetBIOS nameserver hack */ case TY_SECONDARY_NBNS: - if( !Enabled( ConfMSExt ) ) { - LogPrintf( LogIPCP, "MS NBNS req - rejected - msext disabled\n" ); - IpcpInfo.my_reject |= ( 1 << type ); - bcopy( cp, rejp, length ); - rejp += length; - break; - } - switch( mode ){ + if (!Enabled(ConfMSExt)) { + LogPrintf(LogIPCP, "MS NBNS req - rejected - msext disabled\n"); + IpcpInfo.my_reject |= (1 << type); + bcopy(cp, rejp, length); + rejp += length; + break; + } + switch (mode) { case MODE_REQ: - lp = (u_long *)(cp + 2); + lp = (u_long *) (cp + 2); dnsstuff.s_addr = *lp; - ms_info_req.s_addr = nbns_entries[((type - TY_PRIMARY_NBNS)?1:0)].s_addr; - if( dnsstuff.s_addr != ms_info_req.s_addr ) - { - bcopy( cp, nakp, 2 ); - bcopy( &ms_info_req.s_addr , nakp+2, length ); + ms_info_req.s_addr = nbns_entries[((type - TY_PRIMARY_NBNS) ? 1 : 0)].s_addr; + if (dnsstuff.s_addr != ms_info_req.s_addr) { + bcopy(cp, nakp, 2); + bcopy(&ms_info_req.s_addr, nakp + 2, length); LogPrintf(LogIPCP, "MS NBNS req %d:%s->%s - nak\n", - type, - inet_ntoa( dnsstuff ), - inet_ntoa( ms_info_req )); + type, + inet_ntoa(dnsstuff), + inet_ntoa(ms_info_req)); nakp += length; break; } LogPrintf(LogIPCP, "MS NBNS req %d:%s ok - ack\n", - type, - inet_ntoa( ms_info_req )); - bcopy( cp, ackp, length ); + type, + inet_ntoa(ms_info_req)); + bcopy(cp, ackp, length); ackp += length; break; case MODE_NAK: - LogPrintf(LogIPCP, "MS NBNS req %d - NAK??\n", type ); + LogPrintf(LogIPCP, "MS NBNS req %d - NAK??\n", type); break; case MODE_REJ: - LogPrintf(LogIPCP, "MS NBNS req %d - REJ??\n", type ); + LogPrintf(LogIPCP, "MS NBNS req %d - REJ??\n", type); break; } break; @@ -582,7 +570,7 @@ int mode; } void -IpcpInput(struct mbuf *bp) +IpcpInput(struct mbuf * bp) { FsmInput(&IpcpFsm, bp); } diff --git a/usr.sbin/ppp/ipcp.h b/usr.sbin/ppp/ipcp.h index 4e84055..4f76105 100644 --- a/usr.sbin/ppp/ipcp.h +++ b/usr.sbin/ppp/ipcp.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: ipcp.h,v 1.7 1997/06/09 03:27:24 brian Exp $ + * $Id: ipcp.h,v 1.8 1997/08/19 01:10:22 brian Exp $ * * TODO: */ @@ -39,27 +39,27 @@ #endif struct ipcpstate { - struct in_addr his_ipaddr; /* IP address he is willing to use */ - u_long his_compproto; + struct in_addr his_ipaddr; /* IP address he is willing to use */ + u_long his_compproto; - struct in_addr want_ipaddr; /* IP address I'm willing to use */ - u_long want_compproto; + struct in_addr want_ipaddr; /* IP address I'm willing to use */ + u_long want_compproto; - u_long his_reject; /* Request codes rejected by peer */ - u_long my_reject; /* Request codes I have rejected */ - int heis1172; /* True if he is speaking rfc1172 */ + u_long his_reject; /* Request codes rejected by peer */ + u_long my_reject; /* Request codes I have rejected */ + int heis1172; /* True if he is speaking rfc1172 */ }; struct compreq { u_short proto; - u_char slots; - u_char compcid; + u_char slots; + u_char compcid; }; struct in_range { struct in_addr ipaddr; struct in_addr mask; - int width; + int width; }; extern struct ipcpstate IpcpInfo; @@ -71,8 +71,10 @@ extern int HaveTriggerAddress; #ifndef NOMSEXT extern struct in_addr ns_entries[2]; extern struct in_addr nbns_entries[2]; + #endif extern void IpcpInit(void); extern void IpcpDefAddress(void); + #endif diff --git a/usr.sbin/ppp/lcp.c b/usr.sbin/ppp/lcp.c index 56c4867..a2d6485 100644 --- a/usr.sbin/ppp/lcp.c +++ b/usr.sbin/ppp/lcp.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: lcp.c,v 1.25 1997/08/01 02:02:28 brian Exp $ + * $Id: lcp.c,v 1.26 1997/08/20 23:47:45 brian Exp $ * * TODO: * o Validate magic number received from peer. @@ -51,9 +51,9 @@ extern int randinit; struct lcpstate LcpInfo; static void LcpSendConfigReq(struct fsm *); -static void LcpSendTerminateReq(struct fsm *fp); -static void LcpSendTerminateAck(struct fsm *fp); -static void LcpDecodeConfig(u_char *cp, int flen,int mode); +static void LcpSendTerminateReq(struct fsm * fp); +static void LcpSendTerminateAck(struct fsm * fp); +static void LcpDecodeConfig(u_char * cp, int flen, int mode); static void LcpInitRestartCounter(struct fsm *); static void LcpLayerUp(struct fsm *); static void LcpLayerDown(struct fsm *); @@ -77,8 +77,8 @@ struct fsm LcpFsm = { ST_INITIAL, /* State of machine */ 0, 0, 0, 0, - { 0, 0, 0, NULL, NULL, NULL }, - { 0, 0, 0, NULL, NULL, NULL }, + {0, 0, 0, NULL, NULL, NULL}, + {0, 0, 0, NULL, NULL, NULL}, LogLCP, LcpLayerUp, @@ -99,8 +99,7 @@ char *PhaseNames[] = { }; void -NewPhase(new) -int new; +NewPhase(int new) { struct lcpstate *lcp = &LcpInfo; @@ -159,18 +158,18 @@ ReportLcpStatus() return 1; fprintf(VarTerm, "%s [%s]\n", fp->name, StateNames[fp->state]); - fprintf(VarTerm, - " his side: MRU %ld, ACCMAP %08lx, PROTOCOMP %d, ACFCOMP %d, MAGIC %08lx,\n" - " REJECT %04lx\n", - lcp->his_mru, lcp->his_accmap, lcp->his_protocomp, lcp->his_acfcomp, - lcp->his_magic, lcp->his_reject); - fprintf(VarTerm, - " my side: MRU %ld, ACCMAP %08lx, PROTOCOMP %d, ACFCOMP %d, MAGIC %08lx,\n" - " REJECT %04lx\n", + fprintf(VarTerm, + " his side: MRU %ld, ACCMAP %08lx, PROTOCOMP %d, ACFCOMP %d, MAGIC %08lx,\n" + " REJECT %04lx\n", + lcp->his_mru, lcp->his_accmap, lcp->his_protocomp, lcp->his_acfcomp, + lcp->his_magic, lcp->his_reject); + fprintf(VarTerm, + " my side: MRU %ld, ACCMAP %08lx, PROTOCOMP %d, ACFCOMP %d, MAGIC %08lx,\n" + " REJECT %04lx\n", lcp->want_mru, lcp->want_accmap, lcp->want_protocomp, lcp->want_acfcomp, - lcp->want_magic, lcp->my_reject); + lcp->want_magic, lcp->my_reject); fprintf(VarTerm, "\nDefaults: MRU = %ld, ACCMAP = %08x\t", VarMRU, VarAccmap); - fprintf(VarTerm, "Open Mode: %s\n", (VarOpenMode == OPEN_ACTIVE)? "active" : "passive"); + fprintf(VarTerm, "Open Mode: %s\n", (VarOpenMode == OPEN_ACTIVE) ? "active" : "passive"); return 0; } @@ -184,7 +183,6 @@ GenerateMagic() randinit = 1; srandomdev(); } - return (random()); } @@ -207,38 +205,36 @@ LcpInit() lcp->want_auth = PROTO_CHAP; else if (Enabled(ConfPap)) lcp->want_auth = PROTO_PAP; - if (Enabled(ConfLqr)) lcp->want_lqrperiod = VarLqrTimeout * 100; - if (Enabled(ConfAcfcomp)) lcp->want_acfcomp = 1; - if (Enabled(ConfProtocomp)) lcp->want_protocomp = 1; + if (Enabled(ConfLqr)) + lcp->want_lqrperiod = VarLqrTimeout * 100; + if (Enabled(ConfAcfcomp)) + lcp->want_acfcomp = 1; + if (Enabled(ConfProtocomp)) + lcp->want_protocomp = 1; LcpFsm.maxconfig = 10; } static void -LcpInitRestartCounter(fp) -struct fsm *fp; +LcpInitRestartCounter(struct fsm * fp) { fp->FsmTimer.load = VarRetryTimeout * SECTICKS; fp->restart = 5; } void -PutConfValue(cpp, types, type, len, val) -u_char **cpp; -char **types; -u_char type; -int len; -u_long val; +PutConfValue(u_char ** cpp, char **types, u_char type, int len, u_long val) { u_char *cp; struct in_addr ina; cp = *cpp; - *cp++ = type; *cp++ = len; + *cp++ = type; + *cp++ = len; if (len == 6) { if (type == TY_IPADDR) { ina.s_addr = htonl(val); LogPrintf(LogLCP, " %s [%d] %s\n", - types[type], len, inet_ntoa(ina)); + types[type], len, inet_ntoa(ina)); } else { LogPrintf(LogLCP, " %s [%d] %08x\n", types[type], len, val); } @@ -252,8 +248,7 @@ u_long val; } static void -LcpSendConfigReq(fp) -struct fsm *fp; +LcpSendConfigReq(struct fsm * fp) { u_char *cp; struct lcpstate *lcp = &LcpInfo; @@ -263,11 +258,13 @@ struct fsm *fp; cp = ReqBuff; if (!DEV_IS_SYNC) { if (lcp->want_acfcomp && !REJECTED(lcp, TY_ACFCOMP)) { - *cp++ = TY_ACFCOMP; *cp++ = 2; + *cp++ = TY_ACFCOMP; + *cp++ = 2; LogPrintf(LogLCP, " %s\n", cftypes[TY_ACFCOMP]); } if (lcp->want_protocomp && !REJECTED(lcp, TY_PROTOCOMP)) { - *cp++ = TY_PROTOCOMP; *cp++ = 2; + *cp++ = TY_PROTOCOMP; + *cp++ = 2; LogPrintf(LogLCP, " %s\n", cftypes[TY_PROTOCOMP]); } if (!REJECTED(lcp, TY_ACCMAP)) @@ -278,8 +275,9 @@ struct fsm *fp; if (lcp->want_magic && !REJECTED(lcp, TY_MAGICNUM)) PutConfValue(&cp, cftypes, TY_MAGICNUM, 6, lcp->want_magic); if (lcp->want_lqrperiod && !REJECTED(lcp, TY_QUALPROTO)) { - req = (struct lqrreq *)cp; - req->type = TY_QUALPROTO; req->length = sizeof(struct lqrreq); + req = (struct lqrreq *) cp; + req->type = TY_QUALPROTO; + req->length = sizeof(struct lqrreq); req->proto = htons(PROTO_LQR); req->period = htonl(lcp->want_lqrperiod); cp += sizeof(struct lqrreq); @@ -291,16 +289,14 @@ struct fsm *fp; break; case PROTO_CHAP: PutConfValue(&cp, cftypes, TY_AUTHPROTO, 5, lcp->want_auth); - *cp++ = 5; /* Use MD5 */ + *cp++ = 5; /* Use MD5 */ break; } FsmOutput(fp, CODE_CONFIGREQ, fp->reqid++, ReqBuff, cp - ReqBuff); } void -LcpSendProtoRej(option, count) -u_char *option; -int count; +LcpSendProtoRej(u_char * option, int count) { struct fsm *fp = &LcpFsm; @@ -309,23 +305,20 @@ int count; } static void -LcpSendTerminateReq(fp) -struct fsm *fp; +LcpSendTerminateReq(struct fsm * fp) { - /* Most thins are done in fsm layer. Nothing to to. */ + /* Most thins are done in fsm layer. Nothing to to. */ } static void -LcpSendTerminateAck(fp) -struct fsm *fp; +LcpSendTerminateAck(struct fsm * fp) { LogPrintf(LogLCP, "LcpSendTerminateAck.\n"); FsmOutput(fp, CODE_TERMACK, fp->reqid++, NULL, 0); } static void -LcpLayerStart(fp) -struct fsm *fp; +LcpLayerStart(struct fsm * fp) { LogPrintf(LogLCP, "LcpLayerStart\n"); NewPhase(PHASE_ESTABLISH); @@ -343,20 +336,18 @@ StopAllTimers() } static void -LcpLayerFinish(fp) -struct fsm *fp; +LcpLayerFinish(struct fsm * fp) { LogPrintf(LogLCP, "LcpLayerFinish\n"); OsCloseLink(1); NewPhase(PHASE_DEAD); StopAllTimers(); - (void)OsInterfaceDown(0); + (void) OsInterfaceDown(0); Prompt(); } static void -LcpLayerUp(fp) -struct fsm *fp; +LcpLayerUp(struct fsm * fp) { LogPrintf(LogLCP, "LcpLayerUp\n"); OsSetInterfaceParams(23, LcpInfo.his_mru, ModemSpeed()); @@ -373,8 +364,7 @@ struct fsm *fp; } static void -LcpLayerDown(fp) -struct fsm *fp; +LcpLayerDown(struct fsm * fp) { LogPrintf(LogLCP, "LcpLayerDown\n"); StopAllTimers(); @@ -389,16 +379,15 @@ LcpUp() } void -LcpDown() /* Sudden death */ -{ +LcpDown() +{ /* Sudden death */ NewPhase(PHASE_DEAD); StopAllTimers(); FsmDown(&LcpFsm); } void -LcpOpen(mode) -int mode; +LcpOpen(int mode) { LcpFsm.open_mode = mode; FsmOpen(&LcpFsm); @@ -414,10 +403,7 @@ LcpClose() * XXX: Should validate option length */ static void -LcpDecodeConfig(cp, plen, mode) -u_char *cp; -int plen; -int mode; +LcpDecodeConfig(u_char * cp, int plen, int mode) { char *request; int type, length, mru; @@ -439,7 +425,7 @@ int mode; switch (type) { case TY_MRU: - sp = (u_short *)(cp + 2); + sp = (u_short *) (cp + 2); mru = htons(*sp); LogPrintf(LogLCP, " %s %d\n", request, mru); @@ -447,13 +433,16 @@ int mode; case MODE_REQ: if (mru > MAX_MRU) { *sp = htons(MAX_MRU); - bcopy(cp, nakp, 4); nakp += 4; + bcopy(cp, nakp, 4); + nakp += 4; } else if (mru < MIN_MRU) { *sp = htons(MIN_MRU); - bcopy(cp, nakp, 4); nakp += 4; + bcopy(cp, nakp, 4); + nakp += 4; } else { LcpInfo.his_mru = mru; - bcopy(cp, ackp, 4); ackp += 4; + bcopy(cp, ackp, 4); + ackp += 4; } break; case MODE_NAK: @@ -466,14 +455,15 @@ int mode; } break; case TY_ACCMAP: - lp = (u_long *)(cp + 2); + lp = (u_long *) (cp + 2); accmap = htonl(*lp); LogPrintf(LogLCP, " %s %08x\n", request, accmap); switch (mode) { case MODE_REQ: LcpInfo.his_accmap = accmap; - bcopy(cp, ackp, 6); ackp += 6; + bcopy(cp, ackp, 6); + ackp += 6; break; case MODE_NAK: LcpInfo.want_accmap = accmap; @@ -484,7 +474,7 @@ int mode; } break; case TY_AUTHPROTO: - sp = (u_short *)(cp + 2); + sp = (u_short *) (cp + 2); proto = ntohs(*sp); LogPrintf(LogLCP, " %s proto = %04x\n", request, proto); @@ -498,11 +488,13 @@ int mode; } if (Acceptable(ConfPap)) { LcpInfo.his_auth = proto; - bcopy(cp, ackp, length); ackp += length; + bcopy(cp, ackp, length); + ackp += length; } else if (Acceptable(ConfChap)) { - *nakp++ = *cp; *nakp++ = 5; - *nakp++ = (unsigned char)(PROTO_CHAP >> 8); - *nakp++ = (unsigned char)PROTO_CHAP; + *nakp++ = *cp; + *nakp++ = 5; + *nakp++ = (unsigned char) (PROTO_CHAP >> 8); + *nakp++ = (unsigned char) PROTO_CHAP; *nakp++ = 5; } else goto reqreject; @@ -514,19 +506,21 @@ int mode; } if (Acceptable(ConfChap) && cp[4] == 5) { LcpInfo.his_auth = proto; - bcopy(cp, ackp, length); ackp += length; + bcopy(cp, ackp, length); + ackp += length; } else if (Acceptable(ConfPap)) { - *nakp++ = *cp; *nakp++ = 4; - *nakp++ = (unsigned char)(PROTO_PAP >> 8); - *nakp++ = (unsigned char)PROTO_PAP; + *nakp++ = *cp; + *nakp++ = 4; + *nakp++ = (unsigned char) (PROTO_PAP >> 8); + *nakp++ = (unsigned char) PROTO_PAP; } else goto reqreject; break; default: - LogPrintf(LogLCP, " %s not implemented, NAK.\n", request); - bcopy(cp, nakp, length); - nakp += length; - break; + LogPrintf(LogLCP, " %s not implemented, NAK.\n", request); + bcopy(cp, nakp, length); + nakp += length; + break; } break; case MODE_NAK: @@ -537,9 +531,9 @@ int mode; } break; case TY_QUALPROTO: - req = (struct lqrreq *)cp; + req = (struct lqrreq *) cp; LogPrintf(LogLCP, " %s proto: %x, interval: %dms\n", - request, ntohs(req->proto), ntohl(req->period)*10); + request, ntohs(req->proto), ntohl(req->period) * 10); switch (mode) { case MODE_REQ: if (ntohs(req->proto) != PROTO_LQR || !Acceptable(ConfLqr)) @@ -549,7 +543,8 @@ int mode; if (LcpInfo.his_lqrperiod < 500) LcpInfo.his_lqrperiod = 500; req->period = htonl(LcpInfo.his_lqrperiod); - bcopy(cp, ackp, length); ackp += length; + bcopy(cp, ackp, length); + ackp += length; } break; case MODE_NAK: @@ -560,7 +555,7 @@ int mode; } break; case TY_MAGICNUM: - lp = (u_long *)(cp + 2); + lp = (u_long *) (cp + 2); magic = ntohl(*lp); LogPrintf(LogLCP, " %s %08x\n", request, magic); @@ -572,11 +567,12 @@ int mode; LogPrintf(LogLCP, "Magic is same (%08x)\n", magic); LcpInfo.want_magic = GenerateMagic(); bcopy(cp, nakp, 6); - nakp += 6; - } else { + nakp += 6; + } else { LcpInfo.his_magic = magic; - bcopy(cp, ackp, length); ackp += length; - } + bcopy(cp, ackp, length); + ackp += length; + } } else { LcpInfo.my_reject |= (1 << type); goto reqreject; @@ -598,20 +594,24 @@ int mode; switch (mode) { case MODE_REQ: - if (Acceptable(ConfProtocomp)) { + if (Acceptable(ConfProtocomp)) { LcpInfo.his_protocomp = 1; - bcopy(cp, ackp, 2); ackp += 2; - } else { + bcopy(cp, ackp, 2); + ackp += 2; + } else { #ifdef OLDMST + /* * MorningStar before v1.3 needs NAK */ - bcopy(cp, nakp, 2); nakp += 2; + bcopy(cp, nakp, 2); + nakp += 2; #else - bcopy(cp, rejp, 2); rejp += 2; + bcopy(cp, rejp, 2); + rejp += 2; LcpInfo.my_reject |= (1 << type); #endif - } + } break; case MODE_NAK: case MODE_REJ: @@ -624,12 +624,13 @@ int mode; LogPrintf(LogLCP, " %s\n", request); switch (mode) { case MODE_REQ: - if (Acceptable(ConfAcfcomp)) { + if (Acceptable(ConfAcfcomp)) { LcpInfo.his_acfcomp = 1; bcopy(cp, ackp, 2); ackp += 2; - } else { + } else { #ifdef OLDMST + /* * MorningStar before v1.3 needs NAK */ @@ -661,10 +662,10 @@ int mode; default: LogPrintf(LogLCP, " ???[%02x]\n", type); if (mode == MODE_REQ) { -reqreject: - bcopy(cp, rejp, length); - rejp += length; - LcpInfo.my_reject |= (1 << type); + reqreject: + bcopy(cp, rejp, length); + rejp += length; + LcpInfo.my_reject |= (1 << type); } break; } @@ -673,14 +674,13 @@ reqreject: LogPrintf(LogLCP, "LCP size zero\n"); break; } - plen -= length; cp += length; } } void -LcpInput(struct mbuf *bp) +LcpInput(struct mbuf * bp) { FsmInput(&LcpFsm, bp); } diff --git a/usr.sbin/ppp/lcp.h b/usr.sbin/ppp/lcp.h index 6995878..d6ec17e 100644 --- a/usr.sbin/ppp/lcp.h +++ b/usr.sbin/ppp/lcp.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: lcp.h,v 1.6 1997/02/22 16:10:24 peter Exp $ + * $Id: lcp.h,v 1.7 1997/06/09 03:27:25 brian Exp $ * * TODO: */ @@ -24,24 +24,24 @@ #define _LPC_H_ struct lcpstate { - u_long his_mru; - u_long his_accmap; - u_long his_magic; - u_long his_lqrperiod; - u_char his_protocomp; - u_char his_acfcomp; + u_long his_mru; + u_long his_accmap; + u_long his_magic; + u_long his_lqrperiod; + u_char his_protocomp; + u_char his_acfcomp; u_short his_auth; - u_long want_mru; - u_long want_accmap; - u_long want_magic; - u_long want_lqrperiod; - u_char want_protocomp; - u_char want_acfcomp; + u_long want_mru; + u_long want_accmap; + u_long want_magic; + u_long want_lqrperiod; + u_char want_protocomp; + u_char want_acfcomp; u_short want_auth; - u_long his_reject; /* Request codes rejected by peer */ - u_long my_reject; /* Request codes I have rejected */ + u_long his_reject; /* Request codes rejected by peer */ + u_long my_reject; /* Request codes I have rejected */ u_short auth_iwait; u_short auth_ineed; @@ -66,10 +66,10 @@ struct lcpstate { #define TY_COMPFRAME 15 /* Compound-Frames */ struct lqrreq { - u_char type; - u_char length; + u_char type; + u_char length; u_short proto; /* Quality protocol */ - u_long period; /* Reporting interval */ + u_long period; /* Reporting interval */ }; extern struct lcpstate LcpInfo; @@ -80,4 +80,5 @@ extern void LcpSendProtoRej(u_char *, int); extern void LcpOpen(int mode); extern void LcpClose(void); extern void LcpDown(void); + #endif diff --git a/usr.sbin/ppp/lcpproto.h b/usr.sbin/ppp/lcpproto.h index f918893..762fae8 100644 --- a/usr.sbin/ppp/lcpproto.h +++ b/usr.sbin/ppp/lcpproto.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: lcpproto.h,v 1.6 1997/02/22 16:10:25 peter Exp $ + * $Id: lcpproto.h,v 1.7 1997/06/09 03:27:25 brian Exp $ * * TODO: */ @@ -26,11 +26,11 @@ /* * Definition of protocol numbers */ -#define PROTO_IP 0x0021 /* IP */ -#define PROTO_VJUNCOMP 0x002f /* VJ Uncompressed */ -#define PROTO_VJCOMP 0x002d /* VJ Compressed */ -#define PROTO_ICOMPD 0x00fb /* Individual link compressed */ -#define PROTO_COMPD 0x00fd /* Compressed datagram */ +#define PROTO_IP 0x0021 /* IP */ +#define PROTO_VJUNCOMP 0x002f /* VJ Uncompressed */ +#define PROTO_VJCOMP 0x002d /* VJ Compressed */ +#define PROTO_ICOMPD 0x00fb /* Individual link compressed */ +#define PROTO_COMPD 0x00fd /* Compressed datagram */ #define PROTO_IPCP 0x8021 #define PROTO_ICCP 0x80fb @@ -41,12 +41,13 @@ #define PROTO_LQR 0xc025 #define PROTO_CHAP 0xc223 -extern void LcpInput(struct mbuf *bp); -extern void PapInput(struct mbuf *bp); -extern void LqpInput(struct mbuf *bp); -extern void ChapInput(struct mbuf *bp); -extern void IpInput(struct mbuf *bp); -extern struct mbuf *VjCompInput(struct mbuf *bp, int proto); -extern void IpcpInput(struct mbuf *bp); -extern void LqrInput(struct mbuf *bp); +extern void LcpInput(struct mbuf * bp); +extern void PapInput(struct mbuf * bp); +extern void LqpInput(struct mbuf * bp); +extern void ChapInput(struct mbuf * bp); +extern void IpInput(struct mbuf * bp); +extern struct mbuf *VjCompInput(struct mbuf * bp, int proto); +extern void IpcpInput(struct mbuf * bp); +extern void LqrInput(struct mbuf * bp); + #endif diff --git a/usr.sbin/ppp/loadalias.c b/usr.sbin/ppp/loadalias.c index 40a1895..c811e83 100644 --- a/usr.sbin/ppp/loadalias.c +++ b/usr.sbin/ppp/loadalias.c @@ -18,67 +18,67 @@ #define entry(a) { off(a), "_" #a } static struct { - int offset; - char *name; + int offset; + char *name; } map[] = { - entry(GetNextFragmentPtr), - entry(GetNextFragmentPtr), - entry(InitPacketAlias), - entry(PacketAliasIn), - entry(PacketAliasOut), - entry(PacketAliasRedirectAddr), - entry(PacketAliasRedirectPort), - entry(SaveFragmentPtr), - entry(SetPacketAliasAddress), - entry(SetPacketAliasMode), - entry(FragmentAliasIn), - { 0, 0 } + entry(PacketAliasGetFragment), + entry(PacketAliasInit), + entry(PacketAliasIn), + entry(PacketAliasOut), + entry(PacketAliasRedirectAddr), + entry(PacketAliasRedirectPort), + entry(PacketAliasSaveFragment), + entry(PacketAliasSetAddress), + entry(PacketAliasSetMode), + entry(PacketAliasFragmentIn), + { 0, 0 } }; static void *dl; -int loadAliasHandlers(struct aliasHandlers *h) +int +loadAliasHandlers(struct aliasHandlers * h) { - char *path; - char *env; - int i; + char *path; + char *env; + int i; - path = _PATH_ALIAS; - env = getenv("_PATH_ALIAS"); - if (env) - if (OrigUid() == 0) - path = env; - else - LogPrintf(LogALERT, "Ignoring environment _PATH_ALIAS value (%s)", - env); + path = _PATH_ALIAS; + env = getenv("_PATH_ALIAS"); + if (env) + if (OrigUid() == 0) + path = env; + else + LogPrintf(LogALERT, "Ignoring environment _PATH_ALIAS value (%s)", + env); - dl = dlopen(path, RTLD_LAZY); - if (dl == (void *)0) { - LogPrintf(LogWARN, "_PATH_ALIAS (%s): Invalid lib: %s\n", - path, dlerror()); - return -1; + dl = dlopen(path, RTLD_LAZY); + if (dl == (void *) 0) { + LogPrintf(LogWARN, "_PATH_ALIAS (%s): Invalid lib: %s\n", + path, dlerror()); + return -1; + } + for (i = 0; map[i].name; i++) { + *(void **) ((char *) h + map[i].offset) = dlsym(dl, map[i].name); + if (*(void **) ((char *) h + map[i].offset) == (void *) 0) { + LogPrintf(LogWARN, "_PATH_ALIAS (%s): %s: %s\n", path, + map[i].name, dlerror()); + (void) dlclose(dl); + dl = (void *) 0; + return -1; } + } - for (i = 0; map[i].name; i++) { - *(void **)((char *)h + map[i].offset) = dlsym(dl, map[i].name); - if (*(void **)((char *)h + map[i].offset) == (void *)0) { - LogPrintf(LogWARN, "_PATH_ALIAS (%s): %s: %s\n", path, - map[i].name, dlerror()); - (void)dlclose(dl); - dl = (void *)0; - return -1; - } - } - - VarInitPacketAlias(); + VarPacketAliasInit(); - return 0; + return 0; } -void unloadAliasHandlers() +void +unloadAliasHandlers() { - if (dl) { - dlclose(dl); - dl = (void *)0; - } + if (dl) { + dlclose(dl); + dl = (void *) 0; + } } diff --git a/usr.sbin/ppp/loadalias.h b/usr.sbin/ppp/loadalias.h index 601803d..817b769 100644 --- a/usr.sbin/ppp/loadalias.h +++ b/usr.sbin/ppp/loadalias.h @@ -1,17 +1,17 @@ struct aliasHandlers { - char *(*GetNextFragmentPtr)(char *); - void (*InitPacketAlias)(); - int (*PacketAliasIn)(char *,int); - int (*PacketAliasOut)(char *,int); - struct alias_link *(*PacketAliasRedirectAddr) - (struct in_addr, struct in_addr); - struct alias_link *(*PacketAliasRedirectPort) - (struct in_addr, u_short, struct in_addr, u_short, - struct in_addr, u_short, u_char); - int (*SaveFragmentPtr)(char *); - void (*SetPacketAliasAddress)(struct in_addr); - unsigned (*SetPacketAliasMode)(unsigned, unsigned); - void (*FragmentAliasIn)(char *, char *); + char *(*PacketAliasGetFragment) (char *); + void (*PacketAliasInit) (); + int (*PacketAliasIn) (char *, int); + int (*PacketAliasOut) (char *, int); + struct alias_link *(*PacketAliasRedirectAddr) + (struct in_addr, struct in_addr); + struct alias_link *(*PacketAliasRedirectPort) + (struct in_addr, u_short, struct in_addr, u_short, + struct in_addr, u_short, u_char); + int (*PacketAliasSaveFragment) (char *); + void (*PacketAliasSetAddress) (struct in_addr); + unsigned (*PacketAliasSetMode) (unsigned, unsigned); + void (*PacketAliasFragmentIn) (char *, char *); }; extern int loadAliasHandlers(struct aliasHandlers *); diff --git a/usr.sbin/ppp/log.c b/usr.sbin/ppp/log.c index a91248b..4119f94 100644 --- a/usr.sbin/ppp/log.c +++ b/usr.sbin/ppp/log.c @@ -11,24 +11,24 @@ #include "vars.h" static char *LogNames[] = { - "Async", - "Carrier", - "CCP", - "Chat", - "Command", - "Connect", - "Debug", - "HDLC", - "IPCP", - "LCP", - "Link", - "LQM", - "Phase", - "TCP/IP", - "Tun", - "Warning", - "Error", - "Alert" + "Async", + "Carrier", + "CCP", + "Chat", + "Command", + "Connect", + "Debug", + "HDLC", + "IPCP", + "LCP", + "Link", + "LQM", + "Phase", + "TCP/IP", + "Tun", + "Warning", + "Error", + "Alert" }; #define MSK(n) (1<<((n)-1)) @@ -39,112 +39,116 @@ static int LogTunno = -1; static int syslogLevel(int lev) { - switch (lev) { - case LogDEBUG: return LOG_DEBUG; - case LogWARN: return LOG_WARNING; - case LogERROR: return LOG_ERR; - case LogALERT: return LOG_ALERT; - } - return lev >= LogMIN && lev <= LogMAX ? LOG_INFO : 0; + switch (lev) { + case LogDEBUG:return LOG_DEBUG; + case LogWARN: + return LOG_WARNING; + case LogERROR: + return LOG_ERR; + case LogALERT: + return LOG_ALERT; + } + return lev >= LogMIN && lev <= LogMAX ? LOG_INFO : 0; } const char * LogName(int id) { - return id < LogMIN || id > LogMAX ? "Unknown" : LogNames[id-1]; + return id < LogMIN || id > LogMAX ? "Unknown" : LogNames[id - 1]; } void LogKeep(int id) { - if (id >= LogMIN && id <= LogMAXCONF) - LogMask |= MSK(id); + if (id >= LogMIN && id <= LogMAXCONF) + LogMask |= MSK(id); } void LogDiscard(int id) { - if (id >= LogMIN && id <= LogMAXCONF) - LogMask &= ~MSK(id); + if (id >= LogMIN && id <= LogMAXCONF) + LogMask &= ~MSK(id); } void LogDiscardAll() { - LogMask = 0; + LogMask = 0; } int LogIsKept(int id) { - if (id < LogMIN) - return 0; - if (id <= LogMAXCONF) - return LogMask & MSK(id); - return id <= LogMAX; + if (id < LogMIN) + return 0; + if (id <= LogMAXCONF) + return LogMask & MSK(id); + return id <= LogMAX; } void LogOpen(const char *Name) { - openlog(Name, LOG_PID, LOG_DAEMON); + openlog(Name, LOG_PID, LOG_DAEMON); } void LogSetTun(int tunno) { - LogTunno = tunno; + LogTunno = tunno; } void LogClose() { - closelog(); - LogTunno = -1; + closelog(); + LogTunno = -1; } void -LogPrintf(int lev, char *fmt, ...) +LogPrintf(int lev, char *fmt,...) { - va_list ap; - va_start(ap, fmt); - if (LogIsKept(lev)) { - static char nfmt[200]; - - if (LogIsKept(LogTUN) && LogTunno != -1) - snprintf(nfmt, sizeof nfmt, "tun%d: %s: %s", - LogTunno, LogName(lev), fmt); - else - snprintf(nfmt, sizeof nfmt, "%s: %s", LogName(lev), fmt); - if ((lev == LogERROR || lev == LogALERT || lev == LogWARN) && VarTerm) - vfprintf(VarTerm, fmt, ap); - if (lev != LogWARN || !VarTerm) - vsyslog(syslogLevel(lev), nfmt, ap); - } - va_end(ap); + va_list ap; + + va_start(ap, fmt); + if (LogIsKept(lev)) { + static char nfmt[200]; + + if (LogIsKept(LogTUN) && LogTunno != -1) + snprintf(nfmt, sizeof nfmt, "tun%d: %s: %s", + LogTunno, LogName(lev), fmt); + else + snprintf(nfmt, sizeof nfmt, "%s: %s", LogName(lev), fmt); + if ((lev == LogERROR || lev == LogALERT || lev == LogWARN) && VarTerm) + vfprintf(VarTerm, fmt, ap); + if (lev != LogWARN || !VarTerm) + vsyslog(syslogLevel(lev), nfmt, ap); + } + va_end(ap); } void -LogDumpBp(int lev, char *hdr, struct mbuf *bp) +LogDumpBp(int lev, char *hdr, struct mbuf * bp) { - LogDumpBuff(lev, hdr, MBUF_CTOP(bp), bp->cnt); + LogDumpBuff(lev, hdr, MBUF_CTOP(bp), bp->cnt); } void -LogDumpBuff(int lev, char *hdr, u_char *ptr, int n) +LogDumpBuff(int lev, char *hdr, u_char * ptr, int n) { - if (LogIsKept(lev)) { - char buf[49]; - char *b; - int f; - - if (hdr && *hdr) - LogPrintf(lev, "%s", hdr); - while (n > 0) { - b = buf; - for (f = 0; f < 16 && n--; f++, b += 3) - sprintf(b, " %02x", (int)*ptr++); - LogPrintf(lev, buf); - } + if (LogIsKept(lev)) { + char buf[49]; + char *b; + int f; + + if (hdr && *hdr) + LogPrintf(lev, "%s", hdr); + while (n > 0) { + b = buf; + for (f = 0; f < 16 && n--; f++, b += 3) + sprintf(b, " %02x", (int) *ptr++); + LogPrintf(lev, buf); } + } } diff --git a/usr.sbin/ppp/log.h b/usr.sbin/ppp/log.h index 0b52876..6542f94 100644 --- a/usr.sbin/ppp/log.h +++ b/usr.sbin/ppp/log.h @@ -1,11 +1,11 @@ #define LogMIN (1) -#define LogASYNC (1) /* syslog(LOG_INFO, ....) */ +#define LogASYNC (1) /* syslog(LOG_INFO, ....) */ #define LogCARRIER (2) #define LogCCP (3) #define LogCHAT (4) #define LogCOMMAND (5) #define LogCONNECT (6) -#define LogDEBUG (7) /* syslog(LOG_DEBUG, ....) */ +#define LogDEBUG (7) /* syslog(LOG_DEBUG, ....) */ #define LogHDLC (8) #define LogIPCP (9) #define LogLCP (10) @@ -17,7 +17,7 @@ #define LogMAXCONF (15) #define LogWARN (16) /* Sent to VarTerm else syslog(LOG_WARNING, ) */ #define LogERROR (17) /* syslog(LOG_ERR, ....), + sent to VarTerm */ -#define LogALERT (18) /* syslog(LOG_ALERT, ....) */ +#define LogALERT (18) /* syslog(LOG_ALERT, ....) */ #define LogMAX (18) /* The first int arg for all of the following is one of the above values */ @@ -29,6 +29,6 @@ extern int LogIsKept(int); extern void LogOpen(const char *); extern void LogSetTun(int); extern void LogClose(); -extern void LogPrintf(int, char *, ...); -extern void LogDumpBp(int, char *hdr, struct mbuf *bp); -extern void LogDumpBuff(int, char *hdr, u_char *ptr, int n); +extern void LogPrintf(int, char *,...); +extern void LogDumpBp(int, char *hdr, struct mbuf * bp); +extern void LogDumpBuff(int, char *hdr, u_char * ptr, int n); diff --git a/usr.sbin/ppp/lqr.c b/usr.sbin/ppp/lqr.c index a8831ac..9cd17ff 100644 --- a/usr.sbin/ppp/lqr.c +++ b/usr.sbin/ppp/lqr.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: lqr.c,v 1.15 1997/06/09 03:27:27 brian Exp $ + * $Id: lqr.c,v 1.16 1997/07/02 19:18:42 phk Exp $ * * o LQR based on RFC1333 * @@ -36,7 +36,7 @@ struct pppTimer LqrTimer; -static u_long lastpeerin = (u_long)-1; +static u_long lastpeerin = (u_long) - 1; static int lqmmethod; static int echoseq; @@ -64,19 +64,18 @@ SendEchoReq() LogPrintf(LogLQM, "Send echo LQR [%d]\n", echoseq); lqr->sequence = htonl(echoseq++); FsmOutput(fp, CODE_ECHOREQ, fp->reqid++, - (u_char *)lqr, sizeof(struct echolqr)); + (u_char *) lqr, sizeof(struct echolqr)); } } void -RecvEchoLqr(bp) -struct mbuf *bp; +RecvEchoLqr(struct mbuf * bp) { struct echolqr *lqr; u_long seq; if (plength(bp) == sizeof(struct echolqr)) { - lqr = (struct echolqr *)MBUF_CTOP(bp); + lqr = (struct echolqr *) MBUF_CTOP(bp); if (htonl(lqr->signature) == SIGNATURE) { seq = ntohl(lqr->sequence); LogPrintf(LogLQM, "Got echo LQR [%d]\n", ntohl(lqr->sequence)); @@ -86,14 +85,14 @@ struct mbuf *bp; } void -LqrChangeOrder(src, dst) -struct lqrdata *src, *dst; +LqrChangeOrder(struct lqrdata * src, struct lqrdata * dst) { u_long *sp, *dp; int n; - sp = (u_long *)src; dp = (u_long *)dst; - for (n = 0; n < sizeof(struct lqrdata)/sizeof(u_long); n++) + sp = (u_long *) src; + dp = (u_long *) dst; + for (n = 0; n < sizeof(struct lqrdata) / sizeof(u_long); n++) *dp++ = ntohl(*sp++); } @@ -106,11 +105,12 @@ SendLqrReport() if (lqmmethod & LQM_LQR) { if (lqrsendcnt > 5) { + /* * XXX: Should implement LQM strategy */ LogPrintf(LogPHASE, "** 1 Too many ECHO packets are lost. **\n"); - lqmmethod = 0; /* Prevent rcursion via LcpClose() */ + lqmmethod = 0; /* Prevent rcursion via LcpClose() */ reconnect(RECON_TRUE); LcpClose(); } else { @@ -121,19 +121,18 @@ SendLqrReport() } else if (lqmmethod & LQM_ECHO) { if (echoseq - gotseq > 5) { LogPrintf(LogPHASE, "** 2 Too many ECHO packets are lost. **\n"); - lqmmethod = 0; /* Prevent rcursion via LcpClose() */ + lqmmethod = 0; /* Prevent rcursion via LcpClose() */ reconnect(RECON_TRUE); LcpClose(); } else SendEchoReq(); } - if (lqmmethod && Enabled(ConfLqr)) StartTimer(&LqrTimer); } void -LqrInput(struct mbuf *bp) +LqrInput(struct mbuf * bp) { int len; u_char *cp; @@ -144,7 +143,6 @@ LqrInput(struct mbuf *bp) pfree(bp); return; } - if (!Acceptable(ConfLqr)) { bp->offset -= 2; bp->cnt += 2; @@ -153,10 +151,10 @@ LqrInput(struct mbuf *bp) LcpSendProtoRej(cp, bp->cnt); } else { cp = MBUF_CTOP(bp); - lqr = (struct lqrdata *)cp; + lqr = (struct lqrdata *) cp; if (ntohl(lqr->MagicNumber) != LcpInfo.his_magic) { LogPrintf(LogERROR, "LqrInput: magic %x != expecting %x\n", - ntohl(lqr->MagicNumber), LcpInfo.his_magic); + ntohl(lqr->MagicNumber), LcpInfo.his_magic); pfree(bp); return; } @@ -166,12 +164,11 @@ LqrInput(struct mbuf *bp) */ LqrChangeOrder(lqr, &HisLqrData); LqrDump("LqrInput", &HisLqrData); - lqrsendcnt = 0; /* we have received LQR from peer */ + lqrsendcnt = 0; /* we have received LQR from peer */ /* - * Generate LQR responce to peer, if - * i) We are not running LQR timer. - * ii) Two successive LQR's PeerInLQRs are same. + * Generate LQR responce to peer, if i) We are not running LQR timer. ii) + * Two successive LQR's PeerInLQRs are same. */ if (LqrTimer.load == 0 || lastpeerin == HisLqrData.PeerInLQRs) { lqmmethod |= LQM_LQR; @@ -191,10 +188,10 @@ StartLqm() struct lcpstate *lcp = &LcpInfo; int period; - lqrsendcnt = 0; /* start waiting all over for ECHOs */ + lqrsendcnt = 0; /* start waiting all over for ECHOs */ echoseq = 0; gotseq = 0; - + lqmmethod = LQM_ECHO; if (Enabled(ConfLqr)) lqmmethod |= LQM_LQR; @@ -202,8 +199,9 @@ StartLqm() LogPrintf(LogLQM, "LQM method = %d\n", lqmmethod); if (lcp->his_lqrperiod || lcp->want_lqrperiod) { + /* - * We need to run timer. Let's figure out period. + * We need to run timer. Let's figure out period. */ period = lcp->his_lqrperiod ? lcp->his_lqrperiod : lcp->want_lqrperiod; StopTimer(&LqrTimer); @@ -213,21 +211,20 @@ StartLqm() SendLqrReport(); StartTimer(&LqrTimer); LogPrintf(LogLQM, "Will send LQR every %d.%d secs\n", - period/100, period % 100); + period / 100, period % 100); } else { LogPrintf(LogLQM, "LQR is not activated.\n"); } } void -StopLqrTimer(void) +StopLqrTimer() { - StopTimer(&LqrTimer); + StopTimer(&LqrTimer); } void -StopLqr(method) -int method; +StopLqr(int method) { LogPrintf(LogLQM, "StopLqr method = %x\n", method); @@ -243,9 +240,7 @@ int method; } void -LqrDump(message, lqr) -char *message; -struct lqrdata *lqr; +LqrDump(char *message, struct lqrdata * lqr) { if (LogIsKept(LogLQM)) { LogPrintf(LogLQM, "%s:", message); diff --git a/usr.sbin/ppp/lqr.h b/usr.sbin/ppp/lqr.h index 3b649e6..8dd7727 100644 --- a/usr.sbin/ppp/lqr.h +++ b/usr.sbin/ppp/lqr.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: lqr.h,v 1.5 1997/02/22 16:10:29 peter Exp $ + * $Id: lqr.h,v 1.6 1997/06/09 03:27:27 brian Exp $ * * TODO: */ @@ -27,26 +27,26 @@ * Structure of LQR packet defined in RFC1333 */ struct lqrdata { - u_long MagicNumber; - u_long LastOutLQRs; - u_long LastOutPackets; - u_long LastOutOctets; - u_long PeerInLQRs; - u_long PeerInPackets; - u_long PeerInDiscards; - u_long PeerInErrors; - u_long PeerInOctets; - u_long PeerOutLQRs; - u_long PeerOutPackets; - u_long PeerOutOctets; + u_long MagicNumber; + u_long LastOutLQRs; + u_long LastOutPackets; + u_long LastOutOctets; + u_long PeerInLQRs; + u_long PeerInPackets; + u_long PeerInDiscards; + u_long PeerInErrors; + u_long PeerInOctets; + u_long PeerOutLQRs; + u_long PeerOutPackets; + u_long PeerOutOctets; }; struct lqrsave { - u_long SaveInLQRs; - u_long SaveInPackets; - u_long SaveInDiscards; - u_long SaveInErrors; - u_long SaveInOctets; + u_long SaveInLQRs; + u_long SaveInPackets; + u_long SaveInDiscards; + u_long SaveInErrors; + u_long SaveInOctets; }; struct lqrdata MyLqrData, HisLqrData; @@ -64,4 +64,5 @@ extern void StartLqm(void); extern void StopLqr(int); extern void StopLqrTimer(void); extern void RecvEchoLqr(struct mbuf *); + #endif diff --git a/usr.sbin/ppp/main.c b/usr.sbin/ppp/main.c index 694e6f8..5bbb322 100644 --- a/usr.sbin/ppp/main.c +++ b/usr.sbin/ppp/main.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: main.c,v 1.69 1997/07/01 21:31:23 brian Exp $ + * $Id: main.c,v 1.70 1997/08/21 16:21:34 brian Exp $ * * TODO: * o Add commands for traffic summary, version display, etc. @@ -64,7 +64,7 @@ extern void VjInit(), AsyncInit(); extern void AsyncInput(); -extern int SelectSystem(); +extern int SelectSystem(); extern void DecodeCommand(), Prompt(); extern int aft_cmd; @@ -73,8 +73,8 @@ static void DoLoop(void); static void TerminalStop(); static char *ex_desc(); -static struct termios oldtio; /* Original tty mode */ -static struct termios comtio; /* Command level tty mode */ +static struct termios oldtio; /* Original tty mode */ +static struct termios comtio; /* Command level tty mode */ int TermMode; static pid_t BGPid = 0; static char pid_filename[MAXPATHLEN]; @@ -90,11 +90,11 @@ TtyInit(int DontWantInt) stat = fcntl(0, F_GETFL, 0); if (stat > 0) { - stat |= O_NONBLOCK; - (void)fcntl(0, F_SETFL, stat); + stat |= O_NONBLOCK; + (void) fcntl(0, F_SETFL, stat); } newtio = oldtio; - newtio.c_lflag &= ~(ECHO|ISIG|ICANON); + newtio.c_lflag &= ~(ECHO | ISIG | ICANON); newtio.c_iflag = 0; newtio.c_oflag &= ~OPOST; newtio.c_cc[VEOF] = _POSIX_VDISABLE; @@ -111,8 +111,7 @@ TtyInit(int DontWantInt) * Set tty into command mode. We allow canonical input and echo processing. */ void -TtyCommandMode(prompt) -int prompt; +TtyCommandMode(int prompt) { struct termios newtio; int stat; @@ -120,17 +119,18 @@ int prompt; if (!(mode & MODE_INTER)) return; tcgetattr(0, &newtio); - newtio.c_lflag |= (ECHO|ISIG|ICANON); + newtio.c_lflag |= (ECHO | ISIG | ICANON); newtio.c_iflag = oldtio.c_iflag; newtio.c_oflag |= OPOST; tcsetattr(0, TCSADRAIN, &newtio); stat = fcntl(0, F_GETFL, 0); if (stat > 0) { - stat |= O_NONBLOCK; - (void)fcntl(0, F_SETFL, stat); + stat |= O_NONBLOCK; + (void) fcntl(0, F_SETFL, stat); } TermMode = 0; - if(prompt) Prompt(); + if (prompt) + Prompt(); } /* @@ -144,8 +144,8 @@ TtyTermMode() tcsetattr(0, TCSADRAIN, &comtio); stat = fcntl(0, F_GETFL, 0); if (stat > 0) { - stat &= ~O_NONBLOCK; - (void)fcntl(0, F_SETFL, stat); + stat &= ~O_NONBLOCK; + (void) fcntl(0, F_SETFL, stat); } TermMode = 1; } @@ -157,15 +157,14 @@ TtyOldMode() stat = fcntl(0, F_GETFL, 0); if (stat > 0) { - stat &= ~O_NONBLOCK; - (void)fcntl(0, F_SETFL, stat); + stat &= ~O_NONBLOCK; + (void) fcntl(0, F_SETFL, stat); } tcsetattr(0, TCSANOW, &oldtio); } void -Cleanup(excode) -int excode; +Cleanup(int excode) { OsLinkdown(); @@ -173,18 +172,19 @@ int excode; sleep(1); if (mode & MODE_AUTO) DeleteIfRoutes(1); - (void)unlink(pid_filename); - (void)unlink(if_filename); + (void) unlink(pid_filename); + (void) unlink(if_filename); OsInterfaceDown(1); if (mode & MODE_BACKGROUND && BGFiledes[1] != -1) { char c = EX_ERRDEAD; - if (write(BGFiledes[1],&c,1) == 1) - LogPrintf(LogPHASE,"Parent notified of failure.\n"); + + if (write(BGFiledes[1], &c, 1) == 1) + LogPrintf(LogPHASE, "Parent notified of failure.\n"); else - LogPrintf(LogPHASE,"Failed to notify parent of failure.\n"); + LogPrintf(LogPHASE, "Failed to notify parent of failure.\n"); close(BGFiledes[1]); } - LogPrintf(LogPHASE, "PPP Terminated (%s).\n",ex_desc(excode)); + LogPrintf(LogPHASE, "PPP Terminated (%s).\n", ex_desc(excode)); LogClose(); ServerClose(); TtyOldMode(); @@ -193,29 +193,29 @@ int excode; } static void -CloseConnection(signo) -int signo; +CloseConnection(int signo) { /* NOTE, these are manual, we've done a setsid() */ LogPrintf(LogPHASE, "Caught signal %d, abort connection\n", signo); - reconnectState = RECON_FALSE; \ - reconnectCount = 0; \ - DownConnection(); + reconnectState = RECON_FALSE; + \ + reconnectCount = 0; + \ + DownConnection(); dial_up = FALSE; } static void -CloseSession(signo) -int signo; +CloseSession(int signo) { - if (BGPid) { - kill (BGPid, SIGINT); - exit (EX_TERM); - } - LogPrintf(LogPHASE, "Signal %d, terminate.\n", signo); - reconnect(RECON_FALSE); - LcpClose(); - Cleanup(EX_TERM); + if (BGPid) { + kill(BGPid, SIGINT); + exit(EX_TERM); + } + LogPrintf(LogPHASE, "Signal %d, terminate.\n", signo); + reconnect(RECON_FALSE); + LcpClose(); + Cleanup(EX_TERM); } static void @@ -227,8 +227,7 @@ TerminalCont() } static void -TerminalStop(signo) -int signo; +TerminalStop(int signo) { pending_signal(SIGCONT, TerminalCont); TtyOldMode(); @@ -237,23 +236,23 @@ int signo; } static void -SetUpServer(signo) -int signo; +SetUpServer(int signo) { int res; - if ((res = ServerTcpOpen(SERVER_PORT+tunno)) != 0) - LogPrintf(LogERROR, "Failed %d to open port %d\n", res, SERVER_PORT+tunno); + + if ((res = ServerTcpOpen(SERVER_PORT + tunno)) != 0) + LogPrintf(LogERROR, "Failed %d to open port %d\n", res, SERVER_PORT + tunno); } static char * ex_desc(int ex) { static char num[12]; - static char *desc[] = { "normal", "start", "sock", + static char *desc[] = {"normal", "start", "sock", "modem", "dial", "dead", "done", "reboot", "errdead", - "hangup", "term", "nodial", "nologin" }; + "hangup", "term", "nodial", "nologin"}; - if (ex >= 0 && ex < sizeof(desc)/sizeof(*desc)) + if (ex >= 0 && ex < sizeof(desc) / sizeof(*desc)) return desc[ex]; snprintf(num, sizeof num, "%d", ex); return num; @@ -263,7 +262,7 @@ void Usage() { fprintf(stderr, - "Usage: ppp [-auto | -background | -direct | -dedicated | -ddial ] [ -alias ] [system]\n"); + "Usage: ppp [-auto | -background | -direct | -dedicated | -ddial ] [ -alias ] [system]\n"); exit(EX_START); } @@ -279,30 +278,31 @@ ProcessArgs(int argc, char **argv) if (strcmp(cp, "auto") == 0) mode |= MODE_AUTO; else if (strcmp(cp, "background") == 0) - mode |= MODE_BACKGROUND|MODE_AUTO; + mode |= MODE_BACKGROUND | MODE_AUTO; else if (strcmp(cp, "direct") == 0) mode |= MODE_DIRECT; else if (strcmp(cp, "dedicated") == 0) mode |= MODE_DEDICATED; else if (strcmp(cp, "ddial") == 0) - mode |= MODE_DDIAL|MODE_AUTO; + mode |= MODE_DDIAL | MODE_AUTO; else if (strcmp(cp, "alias") == 0) { if (loadAliasHandlers(&VarAliasHandlers) == 0) - mode |= MODE_ALIAS; + mode |= MODE_ALIAS; else - LogPrintf(LogWARN, "Cannot load alias library\n"); - optc--; /* this option isn't exclusive */ - } - else + LogPrintf(LogWARN, "Cannot load alias library\n"); + optc--; /* this option isn't exclusive */ + } else Usage(); optc++; - argv++; argc--; + argv++; + argc--; } if (argc > 1) { fprintf(stderr, "specify only one system label.\n"); exit(EX_START); } - if (argc == 1) dstsystem = *argv; + if (argc == 1) + dstsystem = *argv; if (optc > 1) { fprintf(stderr, "specify only one mode.\n"); @@ -320,18 +320,17 @@ Greetings() } int -main(argc, argv) -int argc; -char **argv; +main(int argc, char **argv) { FILE *lockfile; char *name; VarTerm = 0; name = rindex(argv[0], '/'); - LogOpen(name ? name+1 : argv[0]); + LogOpen(name ? name + 1 : argv[0]); - argc--; argv++; + argc--; + argv++; mode = MODE_INTER; /* default operation is interactive mode */ netfd = modem = tun_in = -1; server = -2; @@ -349,8 +348,7 @@ char **argv; LogPrintf(LogWARN, "open_tun: %s\n", strerror(errno)); return EX_START; } - - if (mode & (MODE_AUTO|MODE_DIRECT|MODE_DEDICATED)) + if (mode & (MODE_AUTO | MODE_DIRECT | MODE_DEDICATED)) mode &= ~MODE_INTER; if (mode & MODE_INTER) { fprintf(VarTerm, "Interactive mode\n"); @@ -359,13 +357,12 @@ char **argv; fprintf(VarTerm, "Automatic Dialer mode\n"); if (dstsystem == NULL) { if (VarTerm) - fprintf(VarTerm, "Destination system must be specified in" - " auto, background or ddial mode.\n"); + fprintf(VarTerm, "Destination system must be specified in" + " auto, background or ddial mode.\n"); return EX_START; } } - - tcgetattr(0, &oldtio); /* Save original tty mode */ + tcgetattr(0, &oldtio); /* Save original tty mode */ pending_signal(SIGHUP, CloseSession); pending_signal(SIGTERM, CloseSession); @@ -377,7 +374,7 @@ char **argv; #ifdef SIGALRM pending_signal(SIGALRM, SIG_IGN); #endif - if(mode & MODE_INTER) { + if (mode & MODE_INTER) { #ifdef SIGTSTP pending_signal(SIGTSTP, TerminalStop); #endif @@ -400,46 +397,44 @@ char **argv; } if ((mode & MODE_AUTO) && DefHisAddress.ipaddr.s_addr == INADDR_ANY) { LogPrintf(LogWARN, "Must specify dstaddr with" - " auto, background or ddial mode.\n"); + " auto, background or ddial mode.\n"); Cleanup(EX_START); } } - if (ServerType() != NO_SERVER) - switch ( LocalAuthInit() ) { - case NOT_FOUND: - if (VarTerm) { - fprintf(VarTerm,LAUTH_M1); - fprintf(VarTerm,LAUTH_M2); - fflush(VarTerm); - } - /* Fall down */ - case VALID: - VarLocalAuth = LOCAL_AUTH; - break; - default: - break; + switch (LocalAuthInit()) { + case NOT_FOUND: + if (VarTerm) { + fprintf(VarTerm, LAUTH_M1); + fprintf(VarTerm, LAUTH_M2); + fflush(VarTerm); + } + /* Fall down */ + case VALID: + VarLocalAuth = LOCAL_AUTH; + break; + default: + break; } if (!(mode & MODE_INTER)) { if (mode & MODE_BACKGROUND) { - if (pipe (BGFiledes)) { - LogPrintf(LogERROR, "pipe: %s", strerror(errno)); + if (pipe(BGFiledes)) { + LogPrintf(LogERROR, "pipe: %s", strerror(errno)); Cleanup(EX_SOCK); } } - /* Create server socket and listen. */ if (server == -2 && ServerTcpOpen(SERVER_PORT + tunno) != 0) - Cleanup(EX_SOCK); + Cleanup(EX_SOCK); if (!(mode & MODE_DIRECT)) { pid_t bgpid; - bgpid = fork (); + bgpid = fork(); if (bgpid == -1) { - LogPrintf(LogERROR, "fork: %s", strerror(errno)); - Cleanup (EX_SOCK); + LogPrintf(LogERROR, "fork: %s", strerror(errno)); + Cleanup(EX_SOCK); } if (bgpid) { char c = EX_NORMAL; @@ -447,53 +442,52 @@ char **argv; if (mode & MODE_BACKGROUND) { /* Wait for our child to close its pipe before we exit. */ BGPid = bgpid; - close(BGFiledes[1]); + close(BGFiledes[1]); if (read(BGFiledes[0], &c, 1) != 1) { fprintf(VarTerm, "Child exit, no status.\n"); - LogPrintf (LogPHASE, "Parent: Child exit, no status.\n"); + LogPrintf(LogPHASE, "Parent: Child exit, no status.\n"); } else if (c == EX_NORMAL) { fprintf(VarTerm, "PPP enabled.\n"); - LogPrintf (LogPHASE, "Parent: PPP enabled.\n"); + LogPrintf(LogPHASE, "Parent: PPP enabled.\n"); } else { - fprintf(VarTerm, "Child failed (%s).\n",ex_desc((int)c)); + fprintf(VarTerm, "Child failed (%s).\n", ex_desc((int) c)); LogPrintf(LogPHASE, "Parent: Child failed (%s).\n", - ex_desc((int)c)); - } - close(BGFiledes[0]); + ex_desc((int) c)); + } + close(BGFiledes[0]); } - return c; + return c; } else if (mode & MODE_BACKGROUND) - close(BGFiledes[0]); + close(BGFiledes[0]); } - - snprintf(pid_filename, sizeof (pid_filename), "%stun%d.pid", - _PATH_VARRUN, tunno); - (void)unlink(pid_filename); + snprintf(pid_filename, sizeof(pid_filename), "%stun%d.pid", + _PATH_VARRUN, tunno); + (void) unlink(pid_filename); if ((lockfile = fopen(pid_filename, "w")) != NULL) { - fprintf(lockfile, "%d\n", (int)getpid()); + fprintf(lockfile, "%d\n", (int) getpid()); fclose(lockfile); } else LogPrintf(LogALERT, "Warning: Can't create %s: %s\n", - pid_filename, strerror(errno)); + pid_filename, strerror(errno)); snprintf(if_filename, sizeof if_filename, "%s%s.if", - _PATH_VARRUN, VarBaseDevice); - (void)unlink(if_filename); + _PATH_VARRUN, VarBaseDevice); + (void) unlink(if_filename); if ((lockfile = fopen(if_filename, "w")) != NULL) { fprintf(lockfile, "tun%d\n", tunno); fclose(lockfile); } else LogPrintf(LogALERT, "Warning: Can't create %s: %s\n", - if_filename, strerror(errno)); + if_filename, strerror(errno)); - VarTerm = 0; /* We know it's currently stdout */ + VarTerm = 0; /* We know it's currently stdout */ close(0); close(2); #ifdef DOTTYINIT - if (mode & (MODE_DIRECT|MODE_DEDICATED)) + if (mode & (MODE_DIRECT | MODE_DEDICATED)) #else if (mode & MODE_DIRECT) #endif @@ -510,7 +504,7 @@ char **argv; do - DoLoop(); + DoLoop(); while (mode & MODE_DEDICATED); Cleanup(EX_DONE); @@ -527,7 +521,6 @@ PacketMode() LogPrintf(LogWARN, "PacketMode: Not connected.\n"); return; } - AsyncInit(); VjInit(); LcpInit(); @@ -536,7 +529,7 @@ PacketMode() LcpUp(); LcpOpen(VarOpenMode); - if ((mode & (MODE_INTER|MODE_AUTO)) == MODE_INTER) { + if ((mode & (MODE_INTER | MODE_AUTO)) == MODE_INTER) { TtyCommandMode(1); if (VarTerm) { fprintf(VarTerm, "Packet mode.\n"); @@ -565,13 +558,14 @@ ReadTty() char ch; static int ttystate; FILE *oVarTerm; + #define MAXLINESIZE 200 char linebuff[MAXLINESIZE]; LogPrintf(LogDEBUG, "termode = %d, netfd = %d, mode = %d\n", - TermMode, netfd, mode); + TermMode, netfd, mode); if (!TermMode) { - n = read(netfd, linebuff, sizeof(linebuff)-1); + n = read(netfd, linebuff, sizeof(linebuff) - 1); if (n > 0) { aft_cmd = 1; DecodeCommand(linebuff, n, 1); @@ -582,7 +576,7 @@ ReadTty() oVarTerm = VarTerm; VarTerm = 0; if (oVarTerm && oVarTerm != stdout) - fclose(oVarTerm); + fclose(oVarTerm); close(netfd); netfd = -1; } @@ -590,7 +584,7 @@ ReadTty() } /* - * We are in terminal mode, decode special sequences + * We are in terminal mode, decode special sequences */ n = read(fileno(VarTerm), &ch, 1); LogPrintf(LogDEBUG, "Got %d bytes (reading from the terminal)", n); @@ -609,6 +603,7 @@ ReadTty() ShowHelp(); break; case 'p': + /* * XXX: Should check carrier. */ @@ -658,23 +653,21 @@ static char *FrameHeaders[] = { }; u_char * -HdlcDetect(cp, n) -u_char *cp; -int n; +HdlcDetect(u_char * cp, int n) { char *ptr, *fp, **hp; - cp[n] = '\0'; /* be sure to null terminated */ + cp[n] = '\0'; /* be sure to null terminated */ ptr = NULL; for (hp = FrameHeaders; *hp; hp++) { fp = *hp; if (DEV_IS_SYNC) fp++; - ptr = strstr((char *)cp, fp); + ptr = strstr((char *) cp, fp); if (ptr) break; } - return((u_char *)ptr); + return ((u_char *) ptr); } static struct pppTimer RedialTimer; @@ -687,8 +680,7 @@ RedialTimeout() } static void -StartRedialTimer(Timeout) - int Timeout; +StartRedialTimer(int Timeout) { StopTimer(&RedialTimer); @@ -696,9 +688,9 @@ StartRedialTimer(Timeout) RedialTimer.state = TIMER_STOPPED; if (Timeout > 0) - RedialTimer.load = Timeout * SECTICKS; + RedialTimer.load = Timeout * SECTICKS; else - RedialTimer.load = (random() % REDIAL_PERIOD) * SECTICKS; + RedialTimer.load = (random() % REDIAL_PERIOD) * SECTICKS; LogPrintf(LogPHASE, "Enter pause (%d) for redialing.\n", RedialTimer.load / SECTICKS); @@ -735,7 +727,6 @@ DoLoop() if (modem < 0) modem = OpenModem(mode); } - fflush(VarTerm); timeout.tv_sec = 0; @@ -743,99 +734,99 @@ DoLoop() reconnectState = RECON_UNKNOWN; if (mode & MODE_BACKGROUND) - dial_up = TRUE; /* Bring the line up */ + dial_up = TRUE; /* Bring the line up */ else - dial_up = FALSE; /* XXXX */ + dial_up = FALSE; /* XXXX */ tries = 0; for (;;) { nfds = 0; - FD_ZERO(&rfds); FD_ZERO(&wfds); FD_ZERO(&efds); + FD_ZERO(&rfds); + FD_ZERO(&wfds); + FD_ZERO(&efds); - /* - * If the link is down and we're in DDIAL mode, bring it back - * up. + /* + * If the link is down and we're in DDIAL mode, bring it back up. */ if (mode & MODE_DDIAL && LcpFsm.state <= ST_CLOSED) - dial_up = TRUE; + dial_up = TRUE; /* - * If we lost carrier and want to re-establish the connection - * due to the "set reconnect" value, we'd better bring the line - * back up. + * If we lost carrier and want to re-establish the connection due to the + * "set reconnect" value, we'd better bring the line back up. */ if (LcpFsm.state <= ST_CLOSED) { if (dial_up != TRUE && reconnectState == RECON_TRUE) { - if (++reconnectCount <= VarReconnectTries) { - LogPrintf(LogPHASE, "Connection lost, re-establish (%d/%d)\n", - reconnectCount, VarReconnectTries); + if (++reconnectCount <= VarReconnectTries) { + LogPrintf(LogPHASE, "Connection lost, re-establish (%d/%d)\n", + reconnectCount, VarReconnectTries); StartRedialTimer(VarReconnectTimer); - dial_up = TRUE; - } else { - if (VarReconnectTries) - LogPrintf(LogPHASE, "Connection lost, maximum (%d) times\n", - VarReconnectTries); - reconnectCount = 0; - if (mode & MODE_BACKGROUND) - Cleanup(EX_DEAD); - } - reconnectState = RECON_ENVOKED; + dial_up = TRUE; + } else { + if (VarReconnectTries) + LogPrintf(LogPHASE, "Connection lost, maximum (%d) times\n", + VarReconnectTries); + reconnectCount = 0; + if (mode & MODE_BACKGROUND) + Cleanup(EX_DEAD); + } + reconnectState = RECON_ENVOKED; } } - /* - * If Ip packet for output is enqueued and require dial up, - * Just do it! - */ - if ( dial_up && RedialTimer.state != TIMER_RUNNING ) { + /* + * If Ip packet for output is enqueued and require dial up, Just do it! + */ + if (dial_up && RedialTimer.state != TIMER_RUNNING) { LogPrintf(LogDEBUG, "going to dial: modem = %d\n", modem); modem = OpenModem(mode); if (modem < 0) { - tries++; - if (!(mode & MODE_DDIAL) && VarDialTries) - LogPrintf(LogCHAT, "Failed to open modem (attempt %u of %d)\n", - tries, VarDialTries); - else - LogPrintf(LogCHAT, "Failed to open modem (attempt %u)\n", tries); + tries++; + if (!(mode & MODE_DDIAL) && VarDialTries) + LogPrintf(LogCHAT, "Failed to open modem (attempt %u of %d)\n", + tries, VarDialTries); + else + LogPrintf(LogCHAT, "Failed to open modem (attempt %u)\n", tries); if (!(mode & MODE_DDIAL) && VarDialTries && tries >= VarDialTries) { if (mode & MODE_BACKGROUND) - Cleanup(EX_DIAL); /* Can't get the modem */ + Cleanup(EX_DIAL); /* Can't get the modem */ dial_up = FALSE; - reconnectState = RECON_UNKNOWN; - reconnectCount = 0; + reconnectState = RECON_UNKNOWN; + reconnectCount = 0; tries = 0; - } else + } else StartRedialTimer(VarRedialTimeout); } else { - tries++; /* Tries are per number, not per list of numbers. */ - if (!(mode & MODE_DDIAL) && VarDialTries) + tries++; /* Tries are per number, not per list of + * numbers. */ + if (!(mode & MODE_DDIAL) && VarDialTries) LogPrintf(LogCHAT, "Dial attempt %u of %d\n", tries, VarDialTries); - else - LogPrintf(LogCHAT, "Dial attempt %u\n", tries); + else + LogPrintf(LogCHAT, "Dial attempt %u\n", tries); if ((res = DialModem()) == EX_DONE) { - sleep(1); /* little pause to allow peer starts */ + sleep(1); /* little pause to allow peer starts */ ModemTimeout(); PacketMode(); dial_up = FALSE; - reconnectState = RECON_UNKNOWN; + reconnectState = RECON_UNKNOWN; tries = 0; } else { CloseModem(); if (mode & MODE_BACKGROUND) { if (VarNextPhone == NULL || res == EX_SIG) - Cleanup(EX_DIAL); /* Tried all numbers - no luck */ + Cleanup(EX_DIAL); /* Tried all numbers - no luck */ else /* Try all numbers in background mode */ StartRedialTimer(VarRedialNextTimeout); } else if (!(mode & MODE_DDIAL) && - ((VarDialTries && tries >= VarDialTries) || - res == EX_SIG)) { + ((VarDialTries && tries >= VarDialTries) || + res == EX_SIG)) { /* I give up ! Can't get through :( */ StartRedialTimer(VarRedialTimeout); dial_up = FALSE; - reconnectState = RECON_UNKNOWN; - reconnectCount = 0; + reconnectState = RECON_UNKNOWN; + reconnectCount = 0; tries = 0; } else if (VarNextPhone == NULL) /* Dial failed. Keep quite during redial wait period. */ @@ -851,7 +842,6 @@ DoLoop() IpStartOutput(); qlen = ModemQlen(); } - if (modem >= 0) { if (modem + 1 > nfds) nfds = modem + 1; @@ -867,12 +857,13 @@ DoLoop() FD_SET(server, &rfds); } - /* *** IMPORTANT *** - * - * CPU is serviced every TICKUNIT micro seconds. - * This value must be chosen with great care. If this values is - * too big, it results loss of characters from modem and poor responce. - * If this values is too small, ppp process eats many CPU time. + /* + * *** IMPORTANT *** + * + * CPU is serviced every TICKUNIT micro seconds. This value must be chosen + * with great care. If this values is too big, it results loss of + * characters from modem and poor responce. If this values is too small, + * ppp process eats many CPU time. */ #ifndef SIGALRM usleep(TICKUNIT); @@ -887,55 +878,52 @@ DoLoop() nfds = tun_in + 1; FD_SET(tun_in, &rfds); } - if (netfd >= 0) { if (netfd + 1 > nfds) nfds = netfd + 1; FD_SET(netfd, &rfds); FD_SET(netfd, &efds); } - #ifndef SIGALRM + /* - * Normally, select() will not block because modem is writable. - * In AUTO mode, select will block until we find packet from tun + * Normally, select() will not block because modem is writable. In AUTO + * mode, select will block until we find packet from tun */ - tp = (RedialTimer.state == TIMER_RUNNING)? &timeout : NULL; + tp = (RedialTimer.state == TIMER_RUNNING) ? &timeout : NULL; i = select(nfds, &rfds, &wfds, &efds, tp); #else + /* - * When SIGALRM timer is running, a select function will be - * return -1 and EINTR after a Time Service signal hundler - * is done. If the redial timer is not running and we are - * trying to dial, poll with a 0 value timer. + * When SIGALRM timer is running, a select function will be return -1 and + * EINTR after a Time Service signal hundler is done. If the redial + * timer is not running and we are trying to dial, poll with a 0 value + * timer. */ tp = (dial_up && RedialTimer.state != TIMER_RUNNING) ? &timeout : NULL; i = select(nfds, &rfds, &wfds, &efds, tp); #endif - if ( i == 0 ) { - continue; + if (i == 0) { + continue; } - - if ( i < 0 ) { - if ( errno == EINTR ) { - handle_signals(); - continue; - } - LogPrintf(LogERROR, "select: %s", strerror(errno)); - break; + if (i < 0) { + if (errno == EINTR) { + handle_signals(); + continue; + } + LogPrintf(LogERROR, "select: %s", strerror(errno)); + break; } - if ((netfd >= 0 && FD_ISSET(netfd, &efds)) || (modem >= 0 && FD_ISSET(modem, &efds))) { LogPrintf(LogALERT, "Exception detected.\n"); break; } - if (server >= 0 && FD_ISSET(server, &rfds)) { LogPrintf(LogPHASE, "connected to client.\n"); - wfd = accept(server, (struct sockaddr *)&hisaddr, &ssize); + wfd = accept(server, (struct sockaddr *) & hisaddr, &ssize); if (wfd < 0) { - LogPrintf(LogERROR, "accept: %s", strerror(errno)); + LogPrintf(LogERROR, "accept: %s", strerror(errno)); continue; } if (netfd >= 0) { @@ -947,24 +935,23 @@ DoLoop() VarTerm = fdopen(netfd, "a+"); mode |= MODE_INTER; Greetings(); - switch ( LocalAuthInit() ) { - case NOT_FOUND: - if (VarTerm) { - fprintf(VarTerm,LAUTH_M1); - fprintf(VarTerm,LAUTH_M2); - fflush(VarTerm); - } - /* Fall down */ - case VALID: - VarLocalAuth = LOCAL_AUTH; - break; - default: - break; + switch (LocalAuthInit()) { + case NOT_FOUND: + if (VarTerm) { + fprintf(VarTerm, LAUTH_M1); + fprintf(VarTerm, LAUTH_M2); + fflush(VarTerm); + } + /* Fall down */ + case VALID: + VarLocalAuth = LOCAL_AUTH; + break; + default: + break; } (void) IsInteractive(); Prompt(); } - if ((mode & MODE_INTER) && (netfd >= 0 && FD_ISSET(netfd, &rfds)) && ((mode & MODE_AUTO) || pgroup == tcgetpgrp(0))) { /* something to read from tty */ @@ -972,7 +959,7 @@ DoLoop() } if (modem >= 0) { if (FD_ISSET(modem, &wfds)) { /* ready to write into modem */ - ModemStartOutput(modem); + ModemStartOutput(modem); } if (FD_ISSET(modem, &rfds)) { /* something to read from modem */ if (LcpFsm.state <= ST_CLOSED) @@ -981,21 +968,23 @@ DoLoop() if ((mode & MODE_DIRECT) && n <= 0) { DownConnection(); } else - LogDumpBuff(LogASYNC, "ReadFromModem", rbuff, n); + LogDumpBuff(LogASYNC, "ReadFromModem", rbuff, n); if (LcpFsm.state <= ST_CLOSED) { + /* - * In dedicated mode, we just discard input until LCP is started. + * In dedicated mode, we just discard input until LCP is started. */ if (!(mode & MODE_DEDICATED)) { cp = HdlcDetect(rbuff, n); if (cp) { + /* * LCP packet is detected. Turn ourselves into packet mode. */ if (cp != rbuff) { - write(modem, rbuff, cp - rbuff); - write(modem, "\r\n", 2); + write(modem, rbuff, cp - rbuff); + write(modem, "\r\n", 2); } PacketMode(); } else @@ -1007,23 +996,23 @@ DoLoop() } } } - - if (tun_in >= 0 && FD_ISSET(tun_in, &rfds)) { /* something to read from tun */ + if (tun_in >= 0 && FD_ISSET(tun_in, &rfds)) { /* something to read + * from tun */ n = read(tun_in, rbuff, sizeof(rbuff)); if (n < 0) { - LogPrintf(LogERROR, "read from tun: %s", strerror(errno)); + LogPrintf(LogERROR, "read from tun: %s", strerror(errno)); continue; } - - if (((struct ip *)rbuff)->ip_dst.s_addr == IpcpInfo.want_ipaddr.s_addr) { + if (((struct ip *) rbuff)->ip_dst.s_addr == IpcpInfo.want_ipaddr.s_addr) { /* we've been asked to send something addressed *to* us :( */ if (VarLoopback) { pri = PacketCheck(rbuff, n, FL_IN); if (pri >= 0) { struct mbuf *bp; + if (mode & MODE_ALIAS) { VarPacketAliasIn(rbuff, sizeof rbuff); - n = ntohs(((struct ip *)rbuff)->ip_len); + n = ntohs(((struct ip *) rbuff)->ip_len); } bp = mballoc(n, MB_IPIN); bcopy(rbuff, MBUF_CTOP(bp), n); @@ -1031,32 +1020,32 @@ DoLoop() LogPrintf(LogDEBUG, "Looped back packet addressed to myself\n"); } continue; - } else + } else LogPrintf(LogDEBUG, "Oops - forwarding packet addressed to myself\n"); } /* - * Process on-demand dialup. Output packets are queued within tunnel - * device until IPCP is opened. + * Process on-demand dialup. Output packets are queued within tunnel + * device until IPCP is opened. */ if (LcpFsm.state <= ST_CLOSED && (mode & MODE_AUTO)) { pri = PacketCheck(rbuff, n, FL_DIAL); if (pri >= 0) { if (mode & MODE_ALIAS) { VarPacketAliasOut(rbuff, sizeof rbuff); - n = ntohs(((struct ip *)rbuff)->ip_len); + n = ntohs(((struct ip *) rbuff)->ip_len); } IpEnqueue(pri, rbuff, n); - dial_up = TRUE; /* XXX */ + dial_up = TRUE; /* XXX */ } continue; } pri = PacketCheck(rbuff, n, FL_OUT); if (pri >= 0) { - if (mode & MODE_ALIAS) { - VarPacketAliasOut(rbuff, sizeof rbuff); - n = ntohs(((struct ip *)rbuff)->ip_len); - } + if (mode & MODE_ALIAS) { + VarPacketAliasOut(rbuff, sizeof rbuff); + n = ntohs(((struct ip *) rbuff)->ip_len); + } IpEnqueue(pri, rbuff, n); } } diff --git a/usr.sbin/ppp/main.h b/usr.sbin/ppp/main.h index bc4e6f3..3a97ddc 100644 --- a/usr.sbin/ppp/main.h +++ b/usr.sbin/ppp/main.h @@ -17,11 +17,12 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: main.h,v 1.3 1997/02/22 16:10:33 peter Exp $ + * $Id: main.h,v 1.4 1997/06/09 03:27:28 brian Exp $ * */ #ifndef _MAIN_H_ #define _MAIN_H_ void Cleanup(int); + #endif diff --git a/usr.sbin/ppp/mbuf.c b/usr.sbin/ppp/mbuf.c index 1343b7e..a66bd6f 100644 --- a/usr.sbin/ppp/mbuf.c +++ b/usr.sbin/ppp/mbuf.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: mbuf.c,v 1.7 1997/06/09 03:27:29 brian Exp $ + * $Id: mbuf.c,v 1.8 1997/06/25 19:30:02 brian Exp $ * */ #include <sys/types.h> @@ -31,40 +31,37 @@ struct memmap { struct mbuf *queue; - int count; -} MemMap[MB_MAX+2]; + int count; +} MemMap[MB_MAX + 2]; static int totalalloced; int -plength(bp) -struct mbuf *bp; +plength(struct mbuf * bp) { int len; for (len = 0; bp; bp = bp->next) len += bp->cnt; - return(len); + return (len); } struct mbuf * -mballoc(cnt, type) -int cnt; -int type; +mballoc(int cnt, int type) { u_char *p; struct mbuf *bp; if (type > MB_MAX) LogPrintf(LogERROR, "Bad mbuf type %d\n", type); - bp = (struct mbuf *)malloc(sizeof(struct mbuf)); + bp = (struct mbuf *) malloc(sizeof(struct mbuf)); if (bp == NULL) { LogPrintf(LogALERT, "failed to allocate memory: %u\n", sizeof(struct mbuf)); ServerClose(); exit(1); } bzero(bp, sizeof(struct mbuf)); - p = (u_char *)malloc(cnt); + p = (u_char *) malloc(cnt); if (p == NULL) { LogPrintf(LogALERT, "failed to allocate memory: %d\n", cnt); ServerClose(); @@ -75,11 +72,11 @@ int type; bp->base = p; bp->size = bp->cnt = cnt; bp->type = type; - return(bp); + return (bp); } struct mbuf * -mbfree(struct mbuf *bp) +mbfree(struct mbuf * bp) { struct mbuf *nbp; @@ -89,23 +86,20 @@ mbfree(struct mbuf *bp) totalalloced -= bp->size; free(bp->base); free(bp); - return(nbp); + return (nbp); } - return(bp); + return (bp); } void -pfree(struct mbuf *bp) +pfree(struct mbuf * bp) { while (bp) bp = mbfree(bp); } struct mbuf * -mbread(bp, ptr, len) -struct mbuf *bp; -u_char *ptr; -int len; +mbread(struct mbuf * bp, u_char * ptr, int len) { int nb; @@ -127,14 +121,11 @@ int len; #endif } } - return(bp); + return (bp); } void -mbwrite(bp, ptr, cnt) -struct mbuf *bp; -u_char *ptr; -int cnt; +mbwrite(struct mbuf * bp, u_char * ptr, int cnt) { int plen; int nb; @@ -144,7 +135,7 @@ int cnt; cnt = plen; while (cnt > 0) { - nb = (cnt < bp->cnt)? cnt : bp->cnt; + nb = (cnt < bp->cnt) ? cnt : bp->cnt; bcopy(ptr, MBUF_CTOP(bp), nb); cnt -= bp->cnt; bp = bp->next; @@ -161,7 +152,7 @@ ShowMemMap() for (i = 0; i <= MB_MAX; i += 2) fprintf(VarTerm, "%d: %d %d: %d\n", - i, MemMap[i].count, i+1, MemMap[i+1].count); + i, MemMap[i].count, i + 1, MemMap[i + 1].count); return 0; } diff --git a/usr.sbin/ppp/mbuf.h b/usr.sbin/ppp/mbuf.h index f7f7b7b..1c88fcc 100644 --- a/usr.sbin/ppp/mbuf.h +++ b/usr.sbin/ppp/mbuf.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: mbuf.h,v 1.4 1997/02/22 16:10:35 peter Exp $ + * $Id: mbuf.h,v 1.5 1997/06/09 03:27:29 brian Exp $ * * TODO: */ @@ -24,13 +24,13 @@ #define _MBUF_H_ struct mbuf { - u_char *base; /* pointer to top of buffer space */ - short size; /* size allocated from base */ - short offset; /* offset to start position */ - short cnt; /* available byte count in buffer */ + u_char *base; /* pointer to top of buffer space */ + short size; /* size allocated from base */ + short offset; /* offset to start position */ + short cnt; /* available byte count in buffer */ short type; - struct mbuf *next; /* link to next mbuf */ - struct mbuf *pnext; /* link to next packet */ + struct mbuf *next; /* link to next mbuf */ + struct mbuf *pnext; /* link to next packet */ }; struct mqueue { @@ -55,15 +55,16 @@ struct mqueue { #define MB_IPQ 10 #define MB_MAX MB_IPQ -extern int plength(struct mbuf *bp); +extern int plength(struct mbuf * bp); extern struct mbuf *mballoc(int cnt, int type); -extern struct mbuf *mbfree(struct mbuf *bp); -extern void pfree(struct mbuf *bp); -extern void mbwrite(struct mbuf *bp, u_char *ptr, int cnt); -extern struct mbuf *mbread(struct mbuf *bp, u_char *ptr, int cnt); -extern void DumpBp(struct mbuf *bp); -extern void Enqueue(struct mqueue *queue, struct mbuf *bp); -extern struct mbuf *Dequeue(struct mqueue *queue); +extern struct mbuf *mbfree(struct mbuf * bp); +extern void pfree(struct mbuf * bp); +extern void mbwrite(struct mbuf * bp, u_char * ptr, int cnt); +extern struct mbuf *mbread(struct mbuf * bp, u_char * ptr, int cnt); +extern void DumpBp(struct mbuf * bp); +extern void Enqueue(struct mqueue * queue, struct mbuf * bp); +extern struct mbuf *Dequeue(struct mqueue * queue); extern void LogMemory(); extern int ShowMemMap(); + #endif diff --git a/usr.sbin/ppp/modem.c b/usr.sbin/ppp/modem.c index b2c5e80..528eb08 100644 --- a/usr.sbin/ppp/modem.c +++ b/usr.sbin/ppp/modem.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: modem.c,v 1.47 1997/08/17 20:38:43 brian Exp $ + * $Id: modem.c,v 1.48 1997/08/23 23:14:23 brian Exp $ * * TODO: */ @@ -47,7 +47,7 @@ extern int DoChat(); -static int mbits; /* Current DCD status */ +static int mbits; /* Current DCD status */ static int connect_count; static struct pppTimer ModemTimer; @@ -57,13 +57,11 @@ extern int TermMode; #define Online (mbits & TIOCM_CD) static struct mbuf *modemout; -static struct mqueue OutputQueues[PRI_LINK+1]; +static struct mqueue OutputQueues[PRI_LINK + 1]; static int dev_is_modem; void -Enqueue(queue, bp) -struct mqueue *queue; -struct mbuf *bp; +Enqueue(struct mqueue * queue, struct mbuf * bp) { if (queue->last) { queue->last->pnext = bp; @@ -75,8 +73,7 @@ struct mbuf *bp; } struct mbuf * -Dequeue(queue) -struct mqueue *queue; +Dequeue(struct mqueue * queue) { struct mbuf *bp; @@ -91,111 +88,162 @@ struct mqueue *queue; LogPrintf(LogDEBUG, "Dequeue: Not zero (%d)!!!\n", queue->qlen); } } - return(bp); + return (bp); } -static struct speeds{ +static struct speeds { int nspeed; speed_t speed; -} speeds[] = { +} speeds[] = { + #ifdef B50 - { 50, B50, }, + { + 50, B50, + }, #endif #ifdef B75 - { 75, B75, }, + { + 75, B75, + }, #endif #ifdef B110 - { 110, B110, }, + { + 110, B110, + }, #endif #ifdef B134 - { 134, B134, }, + { + 134, B134, + }, #endif #ifdef B150 - { 150, B150, }, + { + 150, B150, + }, #endif #ifdef B200 - { 200, B200, }, + { + 200, B200, + }, #endif #ifdef B300 - { 300, B300, }, + { + 300, B300, + }, #endif #ifdef B600 - { 600, B600, }, + { + 600, B600, + }, #endif #ifdef B1200 - { 1200, B1200, }, + { + 1200, B1200, + }, #endif #ifdef B1800 - { 1800, B1800, }, + { + 1800, B1800, + }, #endif #ifdef B2400 - { 2400, B2400, }, + { + 2400, B2400, + }, #endif #ifdef B4800 - { 4800, B4800, }, + { + 4800, B4800, + }, #endif #ifdef B9600 - { 9600, B9600, }, + { + 9600, B9600, + }, #endif #ifdef B19200 - { 19200, B19200, }, + { + 19200, B19200, + }, #endif #ifdef B38400 - { 38400, B38400, }, + { + 38400, B38400, + }, #endif #ifndef _POSIX_SOURCE #ifdef B7200 - { 7200, B7200, }, + { + 7200, B7200, + }, #endif #ifdef B14400 - { 14400, B14400, }, + { + 14400, B14400, + }, #endif #ifdef B28800 - { 28800, B28800, }, + { + 28800, B28800, + }, #endif #ifdef B57600 - { 57600, B57600, }, + { + 57600, B57600, + }, #endif #ifdef B76800 - { 76800, B76800, }, + { + 76800, B76800, + }, #endif #ifdef B115200 - { 115200, B115200, }, + { + 115200, B115200, + }, #endif #ifdef B230400 - { 230400, B230400, }, + { + 230400, B230400, + }, #endif #ifdef EXTA - { 19200, EXTA, }, + { + 19200, EXTA, + }, #endif #ifdef EXTB - { 38400, EXTB, }, + { + 38400, EXTB, + }, #endif -#endif /*_POSIX_SOURCE */ - { 0, 0 } +#endif /* _POSIX_SOURCE */ + { + 0, 0 + } }; -int SpeedToInt(speed) -speed_t speed; +int +SpeedToInt(speed_t speed) { struct speeds *sp; for (sp = speeds; sp->nspeed; sp++) { if (sp->speed == speed) { - return(sp->nspeed); + return (sp->nspeed); } } return 0; } -speed_t IntToSpeed(nspeed) -int nspeed; +speed_t +IntToSpeed(int nspeed) { struct speeds *sp; for (sp = speeds; sp->nspeed; sp++) { if (sp->nspeed == nspeed) { - return(sp->speed); + return (sp->speed); } } return B0; @@ -212,7 +260,7 @@ DownConnection() if (uptime) LogPrintf(LogPHASE, "Connect time: %d secs\n", time(NULL) - uptime); uptime = 0; - strcpy(ScriptBuffer, VarHangupScript); /* arrays are the same size */ + strcpy(ScriptBuffer, VarHangupScript); /* arrays are the same size */ DoChat(ScriptBuffer); if (!TermMode) { CloseModem(); @@ -236,26 +284,27 @@ ModemTimeout() if (dev_is_modem) { if (modem >= 0) { if (ioctl(modem, TIOCMGET, &mbits) < 0) { - LogPrintf(LogPHASE, "ioctl error (%s)!\n", strerror(errno)); - DownConnection(); - return; + LogPrintf(LogPHASE, "ioctl error (%s)!\n", strerror(errno)); + DownConnection(); + return; } } else mbits = 0; change = ombits ^ mbits; if (change & TIOCM_CD) { if (Online) { - time(&uptime); - LogPrintf(LogPHASE, "*Connected!\n"); - connect_count++; - /* - * In dedicated mode, start packet mode immediate - * after we detected carrier. - */ - if (mode & MODE_DEDICATED) + time(&uptime); + LogPrintf(LogPHASE, "*Connected!\n"); + connect_count++; + + /* + * In dedicated mode, start packet mode immediate after we detected + * carrier. + */ + if (mode & MODE_DEDICATED) PacketMode(); } else { - reconnect(RECON_TRUE); + reconnect(RECON_TRUE); DownConnection(); } } @@ -284,15 +333,23 @@ StartModemTimer() struct parity { char *name; char *name1; - int set; -} validparity[] = { - { "even", "P_EVEN", CS7 | PARENB }, { "odd", "P_ODD", CS7 | PARENB | PARODD }, - { "none", "P_ZERO", CS8 }, { NULL, 0 }, + int set; +} validparity[] = { + + { + "even", "P_EVEN", CS7 | PARENB + }, { + "odd", "P_ODD", CS7 | PARENB | PARODD + }, + { + "none", "P_ZERO", CS8 + }, { + NULL, 0 + }, }; int -GetParityValue(str) -char *str; +GetParityValue(char *str) { struct parity *pp; @@ -302,12 +359,11 @@ char *str; return VarParity = pp->set; } } - return(-1); + return (-1); } int -ChangeParity(str) -char *str; +ChangeParity(char *str) { struct termios rstio; int val; @@ -316,7 +372,7 @@ char *str; if (val > 0) { VarParity = val; tcgetattr(modem, &rstio); - rstio.c_cflag &= ~(CSIZE|PARODD|PARENB); + rstio.c_cflag &= ~(CSIZE | PARODD | PARENB); rstio.c_cflag |= val; tcsetattr(modem, TCSADRAIN, &rstio); return 0; @@ -326,8 +382,7 @@ char *str; } int -OpenConnection(host, port) -char *host, *port; +OpenConnection(char *host, char *port) { struct sockaddr_in dest; int sock; @@ -342,7 +397,7 @@ char *host, *port; bcopy(hp->h_addr_list[0], &dest.sin_addr.s_addr, 4); } else { LogPrintf(LogWARN, "OpenConnection: unknown host: %s\n", host); - return(-1); + return (-1); } } dest.sin_port = htons(atoi(port)); @@ -352,28 +407,27 @@ char *host, *port; dest.sin_port = sp->s_port; } else { LogPrintf(LogWARN, "OpenConnection: unknown service: %s\n", port); - return(-1); + return (-1); } } LogPrintf(LogPHASE, "Connected to %s:%s\n", host, port); sock = socket(PF_INET, SOCK_STREAM, 0); if (sock < 0) { - return(sock); + return (sock); } - if (connect(sock, (struct sockaddr *)&dest, sizeof(dest)) < 0) { + if (connect(sock, (struct sockaddr *) & dest, sizeof(dest)) < 0) { LogPrintf(LogWARN, "OpenConnection: connection failed.\n"); - return(-1); + return (-1); } LogPrintf(LogDEBUG, "OpenConnection: modem fd is %d.\n", sock); - return(sock); + return (sock); } static struct termios modemios; int -OpenModem(mode) -int mode; +OpenModem(int mode) { struct termios rstio; int oldflag; @@ -383,29 +437,29 @@ int mode; mbits = 0; if (mode & MODE_DIRECT) { if (isatty(0)) { - modem = open(ctermid(NULL), O_RDWR|O_NONBLOCK); + modem = open(ctermid(NULL), O_RDWR | O_NONBLOCK); if (modem < 0) { LogPrintf(LogPHASE, "Open Failed %s\n", ctermid(NULL)); - return(modem); + return (modem); } } else - /* must be a tcp connection */ - return modem = dup(1); + /* must be a tcp connection */ + return modem = dup(1); } else if (modem < 0) { if (strncmp(VarDevice, "/dev/", 5) == 0) { if ((res = uu_lock(VarBaseDevice)) != UU_LOCK_OK) { - if (res == UU_LOCK_INUSE) - LogPrintf(LogPHASE, "Modem %s is in use\n", VarDevice); - else - LogPrintf(LogPHASE, "Modem %s is in use: uu_lock: %s\n", - VarDevice, uu_lockerr(res)); - return(-1); + if (res == UU_LOCK_INUSE) + LogPrintf(LogPHASE, "Modem %s is in use\n", VarDevice); + else + LogPrintf(LogPHASE, "Modem %s is in use: uu_lock: %s\n", + VarDevice, uu_lockerr(res)); + return (-1); } - modem = open(VarDevice, O_RDWR|O_NONBLOCK); + modem = open(VarDevice, O_RDWR | O_NONBLOCK); if (modem < 0) { - LogPrintf(LogPHASE, "Open Failed %s\n", VarDevice); - (void) uu_unlock(VarBaseDevice); - return(modem); + LogPrintf(LogPHASE, "Open Failed %s\n", VarDevice); + (void) uu_unlock(VarBaseDevice); + return (modem); } } else { /* XXX: PPP over TCP */ @@ -413,24 +467,25 @@ int mode; if (cp) { *cp = 0; host = VarDevice; - port = cp + 1; + port = cp + 1; if (*host && *port) { modem = OpenConnection(host, port); - *cp = ':'; /* Don't destroy VarDevice */ - if (modem < 0) return(-1); + *cp = ':'; /* Don't destroy VarDevice */ + if (modem < 0) + return (-1); } else { - *cp = ':'; /* Don't destroy VarDevice */ - return(-1); + *cp = ':'; /* Don't destroy VarDevice */ + return (-1); } } else - return(-1); + return (-1); } } /* - * If we are working on tty device, change it's mode into - * the one desired for further operation. In this implementation, - * we assume that modem is configuted to use CTS/RTS flow control. + * If we are working on tty device, change it's mode into the one desired + * for further operation. In this implementation, we assume that modem is + * configuted to use CTS/RTS flow control. */ dev_is_modem = isatty(modem) || DEV_IS_SYNC; if (DEV_IS_SYNC) @@ -443,19 +498,20 @@ int mode; " cflag = %x\n", rstio.c_iflag, rstio.c_oflag, rstio.c_cflag); cfmakeraw(&rstio); if (VarCtsRts) - rstio.c_cflag |= CLOCAL | CCTS_OFLOW|CRTS_IFLOW; + rstio.c_cflag |= CLOCAL | CCTS_OFLOW | CRTS_IFLOW; else { - rstio.c_cflag |= CLOCAL; - rstio.c_iflag |= IXOFF; + rstio.c_cflag |= CLOCAL; + rstio.c_iflag |= IXOFF; } rstio.c_iflag |= IXON; if (!(mode & MODE_DEDICATED)) rstio.c_cflag |= HUPCL; if ((mode & MODE_DIRECT) == 0) { + /* * If we are working as direct mode, don't change tty speed. */ - rstio.c_cflag &= ~(CSIZE|PARODD|PARENB); + rstio.c_cflag &= ~(CSIZE | PARODD | PARENB); rstio.c_cflag |= VarParity; if (cfsetspeed(&rstio, IntToSpeed(VarSpeed)) == -1) { LogPrintf(LogWARN, "Unable to set modem speed (modem %d to %d)\n", @@ -464,21 +520,21 @@ int mode; } tcsetattr(modem, TCSADRAIN, &rstio); LogPrintf(LogDEBUG, "modem (put): iflag = %x, oflag = %x, cflag = %x\n", - rstio.c_iflag, rstio.c_oflag, rstio.c_cflag); + rstio.c_iflag, rstio.c_oflag, rstio.c_cflag); if (!(mode & MODE_DIRECT)) if (ioctl(modem, TIOCMGET, &mbits)) - return(-1); + return (-1); LogPrintf(LogDEBUG, "OpenModem: modem control = %o\n", mbits); oldflag = fcntl(modem, F_GETFL, 0); if (oldflag < 0) - return(-1); - (void)fcntl(modem, F_SETFL, oldflag & ~O_NONBLOCK); + return (-1); + (void) fcntl(modem, F_SETFL, oldflag & ~O_NONBLOCK); } StartModemTimer(); - return(modem); + return (modem); } int @@ -487,44 +543,42 @@ ModemSpeed() struct termios rstio; tcgetattr(modem, &rstio); - return(SpeedToInt(cfgetispeed(&rstio))); + return (SpeedToInt(cfgetispeed(&rstio))); } /* * Put modem tty line into raw mode which is necessary in packet mode operation */ int -RawModem(modem) -int modem; +RawModem(int modem) { struct termios rstio; int oldflag; if (!isatty(modem) || DEV_IS_SYNC) - return(0); + return (0); if (!(mode & MODE_DIRECT) && modem >= 0 && !Online) { LogPrintf(LogDEBUG, "RawModem: mode = %d, modem = %d, mbits = %x\n", mode, modem, mbits); } tcgetattr(modem, &rstio); cfmakeraw(&rstio); if (VarCtsRts) - rstio.c_cflag |= CLOCAL | CCTS_OFLOW|CRTS_IFLOW; + rstio.c_cflag |= CLOCAL | CCTS_OFLOW | CRTS_IFLOW; else - rstio.c_cflag |= CLOCAL; + rstio.c_cflag |= CLOCAL; if (!(mode & MODE_DEDICATED)) rstio.c_cflag |= HUPCL; tcsetattr(modem, TCSADRAIN, &rstio); oldflag = fcntl(modem, F_GETFL, 0); if (oldflag < 0) - return(-1); - (void)fcntl(modem, F_SETFL, oldflag | O_NONBLOCK); - return(0); + return (-1); + (void) fcntl(modem, F_SETFL, oldflag | O_NONBLOCK); + return (0); } void -UnrawModem(modem) -int modem; +UnrawModem(int modem) { int oldflag; @@ -532,27 +586,25 @@ int modem; tcsetattr(modem, TCSAFLUSH, &modemios); oldflag = fcntl(modem, F_GETFL, 0); if (oldflag < 0) - return; - (void)fcntl(modem, F_SETFL, oldflag & ~O_NONBLOCK); + return; + (void) fcntl(modem, F_SETFL, oldflag & ~O_NONBLOCK); } } void -HangupModem(flag) -int flag; +HangupModem(int flag) { struct termios tio; if (!isatty(modem)) { mbits &= ~TIOCM_DTR; close(modem); - modem = -1; /* Mark as modem has closed */ + modem = -1; /* Mark as modem has closed */ return; } - if (modem >= 0 && Online) { mbits &= ~TIOCM_DTR; -#ifdef __bsdi__ /* not a POSIX way */ +#ifdef __bsdi__ /* not a POSIX way */ ioctl(modem, TIOCMSET, &mbits); #else tcgetattr(modem, &tio); @@ -563,28 +615,29 @@ int flag; #endif sleep(1); } + /* - * If we are working as dedicated mode, never close it - * until we are directed to quit program. + * If we are working as dedicated mode, never close it until we are + * directed to quit program. */ if (modem >= 0 && (flag || !(mode & MODE_DEDICATED))) { - ModemTimeout(); /* XXX */ - StopTimer(&ModemTimer); /* XXX */ - - /* ModemTimeout() may call DownConection() to close the modem - * resulting in modem == 0. - */ - if (modem >= 0) - { + ModemTimeout(); /* XXX */ + StopTimer(&ModemTimer); /* XXX */ + + /* + * ModemTimeout() may call DownConection() to close the modem resulting + * in modem == 0. + */ + if (modem >= 0) { char ScriptBuffer[200]; - strcpy(ScriptBuffer, VarHangupScript); /* arrays are the same size */ + strcpy(ScriptBuffer, VarHangupScript); /* arrays are the same size */ DoChat(ScriptBuffer); tcflush(modem, TCIOFLUSH); UnrawModem(modem); close(modem); } - modem = -1; /* Mark as modem has closed */ + modem = -1; /* Mark as modem has closed */ (void) uu_unlock(VarBaseDevice); } else if (modem >= 0) { char ScriptBuffer[200]; @@ -597,7 +650,7 @@ int flag; cfsetspeed(&ts, IntToSpeed(VarSpeed)); tcsetattr(modem, TCSADRAIN, &ts); #endif - strcpy(ScriptBuffer, VarHangupScript); /* arrays are the same size */ + strcpy(ScriptBuffer, VarHangupScript); /* arrays are the same size */ DoChat(ScriptBuffer); } } @@ -605,10 +658,9 @@ int flag; void CloseModem() { - if (modem >= 0) - { - close(modem); - modem = -1; + if (modem >= 0) { + close(modem); + modem = -1; } (void) uu_unlock(VarBaseDevice); } @@ -618,26 +670,21 @@ CloseModem() * to the line when ModemStartOutput() is called. */ void -WriteModem(pri, ptr, count) -int pri; -char *ptr; -int count; +WriteModem(int pri, char *ptr, int count) { struct mbuf *bp; bp = mballoc(count, MB_MODEM); bcopy(ptr, MBUF_CTOP(bp), count); - /* Should be NORMAL and LINK only. - * All IP frames get here marked NORMAL. - */ + /* + * Should be NORMAL and LINK only. All IP frames get here marked NORMAL. + */ Enqueue(&OutputQueues[pri], bp); } void -ModemOutput(pri, bp) -int pri; -struct mbuf *bp; +ModemOutput(int pri, struct mbuf * bp) { struct mbuf *wp; int len; @@ -656,38 +703,38 @@ ModemQlen() int len = 0; int i; - for ( i = PRI_NORMAL; i <= PRI_LINK; i ++ ) { - queue = &OutputQueues[i]; - len += queue->qlen; + for (i = PRI_NORMAL; i <= PRI_LINK; i++) { + queue = &OutputQueues[i]; + len += queue->qlen; } - return(len); + return (len); } void -ModemStartOutput(fd) -int fd; +ModemStartOutput(int fd) { struct mqueue *queue; int nb, nw; int i; - if (modemout == NULL && ModemQlen() == 0) - IpStartOutput(); + if (modemout == NULL && ModemQlen() == 0) + IpStartOutput(); if (modemout == NULL) { i = PRI_LINK; for (queue = &OutputQueues[PRI_LINK]; queue >= OutputQueues; queue--) { if (queue->top) { modemout = Dequeue(queue); - if (LogIsKept(LogDEBUG)) { + if (LogIsKept(LogDEBUG)) { if (i > PRI_NORMAL) { struct mqueue *q; + q = &OutputQueues[0]; LogPrintf(LogDEBUG, "ModemStartOutput: Output from queue %d," " normal has %d\n", i, q->qlen); } LogPrintf(LogDEBUG, "ModemStartOutput: Dequeued %d\n", i); - } + } break; } i--; @@ -695,7 +742,8 @@ int fd; } if (modemout) { nb = modemout->cnt; - if (nb > 1600) nb = 1600; + if (nb > 1600) + nb = 1600; nw = write(fd, MBUF_CTOP(modemout), nb); LogPrintf(LogDEBUG, "ModemStartOutput: wrote: %d(%d)\n", nw, nb); LogDumpBuff(LogDEBUG, "ModemStartOutput: modem write", @@ -709,8 +757,8 @@ int fd; } } else if (nw < 0) { if (errno != EAGAIN) { - LogPrintf(LogERROR, "modem write (%d): %s", modem, strerror(errno)); - reconnect(RECON_TRUE); + LogPrintf(LogERROR, "modem write (%d): %s", modem, strerror(errno)); + reconnect(RECON_TRUE); DownConnection(); } } @@ -723,16 +771,16 @@ DialModem() char ScriptBuffer[200]; int excode; - strncpy(ScriptBuffer, VarDialScript,sizeof(ScriptBuffer)-1); - ScriptBuffer[sizeof(ScriptBuffer)-1] = '\0'; + strncpy(ScriptBuffer, VarDialScript, sizeof(ScriptBuffer) - 1); + ScriptBuffer[sizeof(ScriptBuffer) - 1] = '\0'; if ((excode = DoChat(ScriptBuffer)) > 0) { if (VarTerm) fprintf(VarTerm, "dial OK!\n"); - strncpy(ScriptBuffer, VarLoginScript,sizeof(ScriptBuffer)-1); + strncpy(ScriptBuffer, VarLoginScript, sizeof(ScriptBuffer) - 1); if ((excode = DoChat(ScriptBuffer)) > 0) { VarAltPhone = NULL; if (VarTerm) - fprintf(VarTerm, "login OK!\n"); + fprintf(VarTerm, "login OK!\n"); return EX_DONE; } else if (excode == -1) excode = EX_SIG; @@ -740,7 +788,7 @@ DialModem() LogPrintf(LogWARN, "DialModem: login failed.\n"); excode = EX_NOLOGIN; } - ModemTimeout(); /* Dummy call to check modem status */ + ModemTimeout(); /* Dummy call to check modem status */ } else if (excode == -1) excode = EX_SIG; else { @@ -748,7 +796,7 @@ DialModem() excode = EX_NODIAL; } HangupModem(0); - return(excode); + return (excode); } int @@ -756,6 +804,7 @@ ShowModemStatus() { #ifdef TIOCOUTQ int nb; + #endif if (!VarTerm) @@ -783,7 +832,7 @@ ShowModemStatus() } else fprintf(VarTerm, "no parity, "); - fprintf(VarTerm, "CTS/RTS %s.\n", (VarCtsRts? "on" : "off")); + fprintf(VarTerm, "CTS/RTS %s.\n", (VarCtsRts ? "on" : "off")); if (LogIsKept(LogDEBUG)) fprintf(VarTerm, "fd = %d, modem control = %o\n", modem, mbits); diff --git a/usr.sbin/ppp/modem.h b/usr.sbin/ppp/modem.h index 1cdace7..22fab8a 100644 --- a/usr.sbin/ppp/modem.h +++ b/usr.sbin/ppp/modem.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: modem.h,v 1.7 1997/02/22 16:10:37 peter Exp $ + * $Id: modem.h,v 1.8 1997/06/09 03:27:30 brian Exp $ * * TODO: */ @@ -41,4 +41,5 @@ extern speed_t IntToSpeed(int); extern void ModemTimeout(void); extern void DownConnection(void); extern void ModemOutput(int, struct mbuf *); + #endif diff --git a/usr.sbin/ppp/nat_cmd.c b/usr.sbin/ppp/nat_cmd.c index f6aa1be..575a01c 100644 --- a/usr.sbin/ppp/nat_cmd.c +++ b/usr.sbin/ppp/nat_cmd.c @@ -15,198 +15,185 @@ #include "vars.h" static int -StrToAddr (char *, struct in_addr* addr); + StrToAddr(char *, struct in_addr * addr); static int -StrToPort (char *, u_short *port, char *proto); + StrToPort(char *, u_short * port, char *proto); static int -StrToAddrAndPort (char *, struct in_addr *addr, u_short *port, char *proto); + StrToAddrAndPort(char *, struct in_addr * addr, u_short * port, char *proto); int -AliasRedirectPort (struct cmdtab *list, - int argc, - char **argv, - void *param) +AliasRedirectPort(struct cmdtab * list, + int argc, + char **argv, + void *param) { - if (!(mode & MODE_ALIAS)) { - if (VarTerm) - fprintf(VarTerm, "Alias not enabled\n"); - } else if (argc == 3) { - char proto_constant; - char *proto; - u_short local_port; - u_short alias_port; - int error; - struct in_addr local_addr; - struct in_addr null_addr; - struct alias_link *link; - - proto = argv[0]; - if (strcmp(proto, "tcp") == 0) { - proto_constant = IPPROTO_TCP; - } else if (strcmp(proto, "udp") == 0) { - proto_constant = IPPROTO_UDP; - } else { - if (VarTerm) { - fprintf(VarTerm, "port redirect: protocol must be tcp or udp\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, - list->syntax); - } - return 1; - } - - error = StrToAddrAndPort(argv[1], &local_addr, &local_port, proto); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "port redirect: error reading local addr:port\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - return 1; - } - - error = StrToPort(argv[2], &alias_port, proto); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "port redirect: error reading alias port\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - return 1; - } - - null_addr.s_addr = 0; - - link = VarPacketAliasRedirectPort(local_addr, local_port, - null_addr, 0, - null_addr, alias_port, - proto_constant); - - if (link == NULL && VarTerm) - fprintf(VarTerm, "port redirect: error returned by packed" - " aliasing engine (code=%d)\n", error); - } else if (VarTerm) - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - - return 1; + if (!(mode & MODE_ALIAS)) { + if (VarTerm) + fprintf(VarTerm, "Alias not enabled\n"); + } else if (argc == 3) { + char proto_constant; + char *proto; + u_short local_port; + u_short alias_port; + int error; + struct in_addr local_addr; + struct in_addr null_addr; + struct alias_link *link; + + proto = argv[0]; + if (strcmp(proto, "tcp") == 0) { + proto_constant = IPPROTO_TCP; + } else if (strcmp(proto, "udp") == 0) { + proto_constant = IPPROTO_UDP; + } else { + if (VarTerm) { + fprintf(VarTerm, "port redirect: protocol must be tcp or udp\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, + list->syntax); + } + return 1; + } + + error = StrToAddrAndPort(argv[1], &local_addr, &local_port, proto); + if (error) { + if (VarTerm) { + fprintf(VarTerm, "port redirect: error reading local addr:port\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + return 1; + } + error = StrToPort(argv[2], &alias_port, proto); + if (error) { + if (VarTerm) { + fprintf(VarTerm, "port redirect: error reading alias port\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + return 1; + } + null_addr.s_addr = 0; + + link = VarPacketAliasRedirectPort(local_addr, local_port, + null_addr, 0, + null_addr, alias_port, + proto_constant); + + if (link == NULL && VarTerm) + fprintf(VarTerm, "port redirect: error returned by packed" + " aliasing engine (code=%d)\n", error); + } else if (VarTerm) + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + + return 1; } int -AliasRedirectAddr(struct cmdtab *list, - int argc, - char **argv, - void *param) +AliasRedirectAddr(struct cmdtab * list, + int argc, + char **argv, + void *param) { - if (!(mode & MODE_ALIAS)) { + if (!(mode & MODE_ALIAS)) { + if (VarTerm) + fprintf(VarTerm, "alias not enabled\n"); + } else if (argc == 2) { + int error; + struct in_addr local_addr; + struct in_addr alias_addr; + struct alias_link *link; + + error = StrToAddr(argv[0], &local_addr); + if (error) { if (VarTerm) - fprintf(VarTerm, "alias not enabled\n"); - } else if (argc == 2) { - int error; - struct in_addr local_addr; - struct in_addr alias_addr; - struct alias_link *link; - - error = StrToAddr(argv[0], &local_addr); - if (error) { - if (VarTerm) - fprintf(VarTerm, "address redirect: invalid local address\n"); - return 1; - } - - error = StrToAddr(argv[1], &alias_addr); - if (error) { - if (VarTerm) { - fprintf(VarTerm, "address redirect: invalid alias address\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - return 1; - } - - link = VarPacketAliasRedirectAddr(local_addr, alias_addr); - if (link == NULL && VarTerm) { - fprintf(VarTerm, "address redirect: packet aliasing engine error\n"); - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - } - } else if (VarTerm) - fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); - - return 1; + fprintf(VarTerm, "address redirect: invalid local address\n"); + return 1; + } + error = StrToAddr(argv[1], &alias_addr); + if (error) { + if (VarTerm) { + fprintf(VarTerm, "address redirect: invalid alias address\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + return 1; + } + link = VarPacketAliasRedirectAddr(local_addr, alias_addr); + if (link == NULL && VarTerm) { + fprintf(VarTerm, "address redirect: packet aliasing engine error\n"); + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + } + } else if (VarTerm) + fprintf(VarTerm, "Usage: alias %s %s\n", list->name, list->syntax); + + return 1; } static int -StrToAddr (char* str, - struct in_addr* addr) +StrToAddr(char *str, + struct in_addr * addr) { - struct hostent* hp; - - if (inet_aton (str, addr)) - return 0; + struct hostent *hp; - hp = gethostbyname (str); - if (!hp) - { - LogPrintf(LogWARN, "StrToAddr: Unknown host %s.\n", str); - return -1; - } - - *addr = *((struct in_addr *) hp->h_addr); + if (inet_aton(str, addr)) return 0; + + hp = gethostbyname(str); + if (!hp) { + LogPrintf(LogWARN, "StrToAddr: Unknown host %s.\n", str); + return -1; + } + *addr = *((struct in_addr *) hp->h_addr); + return 0; } static int -StrToPort (char *str, - u_short *port, - char *proto) +StrToPort(char *str, + u_short * port, + char *proto) { - int iport; - struct servent* sp; - char* end; - - iport = strtol (str, &end, 10); - if (end != str) - { - *port = htons(iport); - return 0; - } - - sp = getservbyname (str, proto); - if (!sp) - { - LogPrintf(LogWARN, "StrToAddr: Unknown port or service %s/%s.\n", - str, proto); - return -1; - } + int iport; + struct servent *sp; + char *end; - *port = sp->s_port; + iport = strtol(str, &end, 10); + if (end != str) { + *port = htons(iport); return 0; + } + sp = getservbyname(str, proto); + if (!sp) { + LogPrintf(LogWARN, "StrToAddr: Unknown port or service %s/%s.\n", + str, proto); + return -1; + } + *port = sp->s_port; + return 0; } int -StrToAddrAndPort (char* str, - struct in_addr* addr, - u_short *port, - char *proto) +StrToAddrAndPort(char *str, + struct in_addr * addr, + u_short * port, + char *proto) { - char *ptr; - - ptr = strchr (str, ':'); - if (!ptr) - { - LogPrintf(LogWARN, "StrToAddrAndPort: %s is missing port number.\n", - str); - return -1; - } + char *ptr; - *ptr = '\0'; - ++ptr; + ptr = strchr(str, ':'); + if (!ptr) { + LogPrintf(LogWARN, "StrToAddrAndPort: %s is missing port number.\n", + str); + return -1; + } + *ptr = '\0'; + ++ptr; - if (StrToAddr (str, addr) != 0) - return -1; + if (StrToAddr(str, addr) != 0) + return -1; - return StrToPort (ptr, port, proto); + return StrToPort(ptr, port, proto); } - diff --git a/usr.sbin/ppp/nat_cmd.h b/usr.sbin/ppp/nat_cmd.h index 1063bb9..60ecdab 100644 --- a/usr.sbin/ppp/nat_cmd.h +++ b/usr.sbin/ppp/nat_cmd.h @@ -1,5 +1,5 @@ extern int -AliasRedirectPort (struct cmdtab *, int, char **, void *); + AliasRedirectPort(struct cmdtab *, int, char **, void *); extern int -AliasRedirectAddr (struct cmdtab *, int, char **, void *); + AliasRedirectAddr(struct cmdtab *, int, char **, void *); diff --git a/usr.sbin/ppp/os.c b/usr.sbin/ppp/os.c index a37a760..6f9073c 100644 --- a/usr.sbin/ppp/os.c +++ b/usr.sbin/ppp/os.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: os.c,v 1.22 1997/06/09 03:27:31 brian Exp $ + * $Id: os.c,v 1.23 1997/06/13 02:07:30 brian Exp $ * */ #include "fsm.h" @@ -53,15 +53,17 @@ static int linkup; #ifdef bsdi extern char *inet_ntoa(); + #endif extern void HangupModem(); char *IfDevName; static int -SetIpDevice(myaddr, hisaddr, netmask, updown) -struct in_addr myaddr, hisaddr, netmask; -int updown; +SetIpDevice(struct in_addr myaddr, + struct in_addr hisaddr, + struct in_addr netmask, + int updown) { struct sockaddr_in *sin; int s; @@ -71,15 +73,14 @@ int updown; s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) { LogPrintf(LogERROR, "socket: %s", strerror(errno)); - return(-1); + return (-1); } - if (updown == 0) { if (Enabled(ConfProxy)) cifproxyarp(s, oldhis.s_addr); if (oldmine.s_addr == 0 && oldhis.s_addr == 0) { close(s); - return(0); + return (0); } bzero(&ifra.ifra_addr, sizeof(ifra.ifra_addr)); bzero(&ifra.ifra_broadaddr, sizeof(ifra.ifra_addr)); @@ -87,40 +88,44 @@ int updown; if (ioctl(s, SIOCDIFADDR, &ifra) < 0) { LogPrintf(LogERROR, "ioctl(SIOCDIFADDR): %s", strerror(errno)); close(s); - return(-1); + return (-1); } - oldmine.s_addr = oldhis.s_addr = 0; } else { + /* * If given addresses are alreay set, then ignore this request. */ if (oldmine.s_addr == myaddr.s_addr && oldhis.s_addr == hisaddr.s_addr) { close(s); - return(0); + return (0); } + /* * If different address has been set, then delete it first. */ if (oldmine.s_addr || oldhis.s_addr) { changeaddr = 1; } + /* - * Set interface address + * Set interface address */ - sin = (struct sockaddr_in *)&(ifra.ifra_addr); + sin = (struct sockaddr_in *) & (ifra.ifra_addr); sin->sin_family = AF_INET; sin->sin_addr = oldmine = myaddr; sin->sin_len = sizeof(*sin); + /* - * Set destination address + * Set destination address */ - sin = (struct sockaddr_in *)&(ifra.ifra_broadaddr); + sin = (struct sockaddr_in *) & (ifra.ifra_broadaddr); sin->sin_family = AF_INET; sin->sin_addr = oldhis = hisaddr; sin->sin_len = sizeof(*sin); + /* - */ + * */ addr = ntohl(myaddr.s_addr); if (IN_CLASSA(addr)) mask = IN_CLASSA_NET; @@ -128,49 +133,52 @@ int updown; mask = IN_CLASSB_NET; else mask = IN_CLASSC_NET; + /* - * if subnet mask is given, use it instead of class mask. + * if subnet mask is given, use it instead of class mask. */ if (netmask.s_addr && (ntohl(netmask.s_addr) & mask) == mask) mask = ntohl(netmask.s_addr); - sin = (struct sockaddr_in *)&(ifra.ifra_mask); + sin = (struct sockaddr_in *) & (ifra.ifra_mask); sin->sin_family = AF_INET; sin->sin_addr.s_addr = htonl(mask); sin->sin_len = sizeof(*sin); if (changeaddr) { + /* * Interface already exists. Just change the address. */ bcopy(&ifra.ifra_addr, &ifrq.ifr_addr, sizeof(struct sockaddr)); if (ioctl(s, SIOCSIFADDR, &ifra) < 0) - LogPrintf(LogERROR, "ioctl(SIFADDR): %s", strerror(errno)); + LogPrintf(LogERROR, "ioctl(SIFADDR): %s", strerror(errno)); bcopy(&ifra.ifra_broadaddr, &ifrq.ifr_dstaddr, sizeof(struct sockaddr)); if (ioctl(s, SIOCSIFDSTADDR, &ifrq) < 0) - LogPrintf(LogERROR, "ioctl(SIFDSTADDR): %s", strerror(errno)); + LogPrintf(LogERROR, "ioctl(SIFDSTADDR): %s", strerror(errno)); #ifdef notdef bcopy(&ifra.ifra_mask, &ifrq.ifr_broadaddr, sizeof(struct sockaddr)); if (ioctl(s, SIOCSIFBRDADDR, &ifrq) < 0) - LogPrintf(LogERROR, "ioctl(SIFBRDADDR): %s", strerror(errno)); + LogPrintf(LogERROR, "ioctl(SIFBRDADDR): %s", strerror(errno)); #endif } else if (ioctl(s, SIOCAIFADDR, &ifra) < 0) { LogPrintf(LogERROR, "ioctl(SIOCAIFADDR): %s", strerror(errno)); close(s); - return(-1); + return (-1); } if (Enabled(ConfProxy)) sifproxyarp(s, hisaddr.s_addr); } close(s); - return(0); + return (0); } int -OsSetIpaddress(myaddr, hisaddr, netmask) -struct in_addr myaddr, hisaddr, netmask; +OsSetIpaddress(struct in_addr myaddr, + struct in_addr hisaddr, + struct in_addr netmask) { - return(SetIpDevice(myaddr, hisaddr, netmask, 1)); + return (SetIpDevice(myaddr, hisaddr, netmask, 1)); } static struct in_addr peer_addr; @@ -184,16 +192,17 @@ OsLinkup() if (linkup == 0) { reconnectState = RECON_UNKNOWN; if (mode & MODE_BACKGROUND && BGFiledes[1] != -1) { - char c = EX_NORMAL; - if (write(BGFiledes[1],&c,1) == 1) - LogPrintf(LogPHASE,"Parent notified of success.\n"); - else - LogPrintf(LogPHASE,"Failed to notify parent of success.\n"); - close(BGFiledes[1]); - BGFiledes[1] = -1; + char c = EX_NORMAL; + + if (write(BGFiledes[1], &c, 1) == 1) + LogPrintf(LogPHASE, "Parent notified of success.\n"); + else + LogPrintf(LogPHASE, "Failed to notify parent of success.\n"); + close(BGFiledes[1]); + BGFiledes[1] = -1; } peer_addr = IpcpInfo.his_ipaddr; - s = (char *)inet_ntoa(peer_addr); + s = (char *) inet_ntoa(peer_addr); if (LogIsKept(LogLINK)) LogPrintf(LogLINK, "OsLinkup: %s\n", s); else @@ -201,10 +210,10 @@ OsLinkup() if (SelectSystem(inet_ntoa(IpcpInfo.want_ipaddr), LINKUPFILE) < 0) { if (dstsystem) { - if (SelectSystem(dstsystem, LINKUPFILE) < 0) - SelectSystem("MYADDR", LINKUPFILE); + if (SelectSystem(dstsystem, LINKUPFILE) < 0) + SelectSystem("MYADDR", LINKUPFILE); } else - SelectSystem("MYADDR", LINKUPFILE); + SelectSystem("MYADDR", LINKUPFILE); } linkup = 1; } @@ -216,7 +225,7 @@ OsLinkdown() char *s; if (linkup) { - s = (char *)inet_ntoa(peer_addr); + s = (char *) inet_ntoa(peer_addr); if (LogIsKept(LogLINK)) LogPrintf(LogLINK, "OsLinkdown: %s\n", s); else @@ -227,46 +236,43 @@ OsLinkdown() linkup = 0; if (SelectSystem(s, LINKDOWNFILE) < 0) { if (dstsystem) { - if (SelectSystem(dstsystem, LINKDOWNFILE) < 0) - SelectSystem("MYADDR", LINKDOWNFILE); + if (SelectSystem(dstsystem, LINKDOWNFILE) < 0) + SelectSystem("MYADDR", LINKDOWNFILE); } else - SelectSystem("MYADDR", LINKDOWNFILE); + SelectSystem("MYADDR", LINKDOWNFILE); } } } int -OsInterfaceDown(final) -int final; +OsInterfaceDown(int final) { struct in_addr zeroaddr; int s; OsLinkdown(); if (!final && (mode & MODE_AUTO)) /* We still want interface alive */ - return(0); + return (0); s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) { LogPrintf(LogERROR, "socket: %s", strerror(errno)); - return(-1); + return (-1); } ifrq.ifr_flags &= ~IFF_UP; if (ioctl(s, SIOCSIFFLAGS, &ifrq) < 0) { LogPrintf(LogERROR, "ioctl(SIOCSIFFLAGS): %s", strerror(errno)); close(s); - return(-1); + return (-1); } - zeroaddr.s_addr = 0; SetIpDevice(zeroaddr, zeroaddr, zeroaddr, 0); close(s); - return(0); + return (0); } void -OsSetInterfaceParams(type, mtu, speed) -int type, mtu, speed; +OsSetInterfaceParams(int type, int mtu, int speed) { struct tuninfo info; @@ -289,32 +295,31 @@ int type, mtu, speed; * 'Device not configured' (ENXIO), or the third * * 'No such file or directory' (ENOENT) error. */ int -OpenTunnel(ptun) -int *ptun; +OpenTunnel(int *ptun) { int s; char ifname[IFNAMSIZ]; - static char devname[14]; /* sufficient room for "/dev/tun65535" */ - unsigned unit, enoentcount=0; + static char devname[14]; /* sufficient room for "/dev/tun65535" */ + unsigned unit, enoentcount = 0; int err; err = ENOENT; - for( unit=0; unit <= MAX_TUN ; unit++ ) { - snprintf( devname, sizeof(devname), "/dev/tun%d", unit ); + for (unit = 0; unit <= MAX_TUN; unit++) { + snprintf(devname, sizeof(devname), "/dev/tun%d", unit); tun_out = open(devname, O_RDWR); - if( tun_out >= 0 ) - break; - if( errno == ENXIO ) { + if (tun_out >= 0) + break; + if (errno == ENXIO) { + unit = MAX_TUN; + err = errno; + } else if (errno == ENOENT) { + enoentcount++; + if (enoentcount > 2) unit = MAX_TUN; - err = errno; - } else if( errno == ENOENT ) { - enoentcount++; - if( enoentcount > 2 ) - unit=MAX_TUN; } else - err = errno; + err = errno; } - if( unit > MAX_TUN ) { + if (unit > MAX_TUN) { if (VarTerm) fprintf(VarTerm, "No tunnel device is available (%s).\n", strerror(err)); return -1; @@ -326,66 +331,60 @@ int *ptun; /* * At first, name the interface. */ - strncpy(ifname, devname + 5, IFNAMSIZ-1); + strncpy(ifname, devname + 5, IFNAMSIZ - 1); - bzero((char *)&ifra, sizeof(ifra)); - bzero((char *)&ifrq, sizeof(ifrq)); + bzero((char *) &ifra, sizeof(ifra)); + bzero((char *) &ifrq, sizeof(ifrq)); - strncpy(ifrq.ifr_name, ifname, IFNAMSIZ-1); - strncpy(ifra.ifra_name, ifname, IFNAMSIZ-1); + strncpy(ifrq.ifr_name, ifname, IFNAMSIZ - 1); + strncpy(ifra.ifra_name, ifname, IFNAMSIZ - 1); s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) { LogPrintf(LogERROR, "socket: %s", strerror(errno)); - return(-1); + return (-1); } /* - * Now, bring up the interface. + * Now, bring up the interface. */ if (ioctl(s, SIOCGIFFLAGS, &ifrq) < 0) { LogPrintf(LogERROR, "ioctl(SIOCGIFFLAGS): %s", strerror(errno)); close(s); - return(-1); + return (-1); } - ifrq.ifr_flags |= IFF_UP; if (ioctl(s, SIOCSIFFLAGS, &ifrq) < 0) { LogPrintf(LogERROR, "ioctl(SIOCSIFFLAGS): %s", strerror(errno)); close(s); - return(-1); + return (-1); } - tun_in = tun_out; IfDevName = devname + 5; if (GetIfIndex(IfDevName) < 0) { LogPrintf(LogERROR, "OpenTunnel: Can't find ifindex.\n"); close(s); - return(-1); + return (-1); } if (VarTerm) fprintf(VarTerm, "Using interface: %s\n", IfDevName); LogPrintf(LogPHASE, "Using interface: %s\n", IfDevName); close(s); - return(0); + return (0); } void -OsCloseLink(flag) -int flag; +OsCloseLink(int flag) { HangupModem(flag); } void -OsAddInOctets(cnt) -int cnt; +OsAddInOctets(int cnt) { } void -OsAddOutOctets(cnt) -int cnt; +OsAddOutOctets(int cnt) { } - diff --git a/usr.sbin/ppp/os.h b/usr.sbin/ppp/os.h index 6e9e827..303e300 100644 --- a/usr.sbin/ppp/os.h +++ b/usr.sbin/ppp/os.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: os.h,v 1.5 1997/02/22 16:10:39 peter Exp $ + * $Id: os.h,v 1.6 1997/06/09 03:27:32 brian Exp $ * * TODO: */ @@ -29,9 +29,10 @@ void OsSetInterfaceParams(int type, int mtu, int speed); int OpenTunnel(int *); void OsCloseLink(int flag); void OsLinkup(void); -void OsLinkdown (void); +void OsLinkdown(void); void OsSetRoute(int, struct in_addr, struct in_addr, struct in_addr); void DeleteIfRoutes(int); void OsAddInOctets(int cnt); void OsAddOutOctets(int cnt); + #endif diff --git a/usr.sbin/ppp/pap.c b/usr.sbin/ppp/pap.c index 75f4384..2fd39cd 100644 --- a/usr.sbin/ppp/pap.c +++ b/usr.sbin/ppp/pap.c @@ -18,7 +18,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: pap.c,v 1.12 1997/05/26 00:44:08 brian Exp $ + * $Id: pap.c,v 1.13 1997/06/09 03:27:32 brian Exp $ * * TODO: */ @@ -33,20 +33,19 @@ #include "auth.h" #ifndef NOPASSWDAUTH -# include "passwdauth.h" +#include "passwdauth.h" #endif static char *papcodes[] = { "???", "REQUEST", "ACK", "NAK" }; -struct authinfo AuthPapInfo = { +struct authinfo AuthPapInfo = { SendPapChallenge, }; void -SendPapChallenge(papid) -int papid; +SendPapChallenge(int papid) { struct fsmheader lh; struct mbuf *bp; @@ -75,10 +74,7 @@ int papid; } static void -SendPapCode(id, code, message) -int id; -char *message; -int code; +SendPapCode(int id, int code, char *message) { struct fsmheader lh; struct mbuf *bp; @@ -103,8 +99,7 @@ int code; * Validate given username and passwrd against with secret table */ static int -PapValidate(name, key) -u_char *name, *key; +PapValidate(u_char * name, u_char * key) { int nlen, klen; @@ -116,19 +111,17 @@ u_char *name, *key; name, nlen, key, klen); #ifndef NOPASSWDAUTH - if( Enabled( ConfPasswdAuth ) ) - { - LogPrintf( LogLCP, "PasswdAuth enabled - calling\n" ); - return PasswdAuth( name, key ); + if (Enabled(ConfPasswdAuth)) { + LogPrintf(LogLCP, "PasswdAuth enabled - calling\n"); + return PasswdAuth(name, key); } #endif - return(AuthValidate(SECRETFILE, name, key)); + return (AuthValidate(SECRETFILE, name, key)); } void -PapInput(bp) -struct mbuf *bp; +PapInput(struct mbuf * bp) { int len = plength(bp); struct fsmheader *php; @@ -136,7 +129,7 @@ struct mbuf *bp; u_char *cp; if (len >= sizeof(struct fsmheader)) { - php = (struct fsmheader *)MBUF_CTOP(bp); + php = (struct fsmheader *) MBUF_CTOP(bp); if (len >= ntohs(php->length)) { if (php->code < PAP_REQUEST || php->code > PAP_NAK) php->code = 0; @@ -152,13 +145,13 @@ struct mbuf *bp; NewPhase(PHASE_NETWORK); } else { SendPapCode(php->id, PAP_NAK, "Login incorrect"); - reconnect(RECON_FALSE); + reconnect(RECON_FALSE); LcpClose(); } break; case PAP_ACK: StopAuthTimer(&AuthPapInfo); - cp = (u_char *)(php + 1); + cp = (u_char *) (php + 1); len = *cp++; cp[len] = 0; LogPrintf(LogPHASE, "Received PAP_ACK (%s)\n", cp); @@ -170,11 +163,11 @@ struct mbuf *bp; break; case PAP_NAK: StopAuthTimer(&AuthPapInfo); - cp = (u_char *)(php + 1); + cp = (u_char *) (php + 1); len = *cp++; cp[len] = 0; LogPrintf(LogPHASE, "Received PAP_NAK (%s)\n", cp); - reconnect(RECON_FALSE); + reconnect(RECON_FALSE); LcpClose(); break; } diff --git a/usr.sbin/ppp/passwdauth.c b/usr.sbin/ppp/passwdauth.c index 78f738d..ff63bc1 100644 --- a/usr.sbin/ppp/passwdauth.c +++ b/usr.sbin/ppp/passwdauth.c @@ -28,81 +28,77 @@ #include "passwdauth.h" int -PasswdAuth(name, key) -char *name, *key; +PasswdAuth(char *name, char *key) { static int logged_in = 0; struct passwd *pwd; char *salt, *ep; struct utmp utmp; - LogPrintf(LogDEBUG, "PasswdAuth: Called with name %s, key %s\n", name, key ); + LogPrintf(LogDEBUG, "PasswdAuth: Called with name %s, key %s\n", name, key); - if(( pwd = getpwnam( name ) )) + if ((pwd = getpwnam(name))) salt = pwd->pw_passwd; - else - { + else { endpwent(); - LogPrintf( LogLCP, "PasswdAuth - user (%s) not in passwd file\n", name ); - return 0; /* false - failed to authenticate (password not in file) */ + LogPrintf(LogLCP, "PasswdAuth - user (%s) not in passwd file\n", name); + return 0; /* false - failed to authenticate (password + * not in file) */ } #ifdef LOCALHACK + /* * All our PPP usernames start with 'P' so i check that here... if you - * don't do this i suggest all your PPP users be members of a group - * and you check the guid + * don't do this i suggest all your PPP users be members of a group and you + * check the guid */ - if( name[0] != 'P' ) - { - LogPrintf( LogLCP, "PasswdAuth - user (%s) not a PPP user\n", name ); + if (name[0] != 'P') { + LogPrintf(LogLCP, "PasswdAuth - user (%s) not a PPP user\n", name); endpwent(); return 0; } +#endif /* LOCALHACK */ -#endif /* LOCALHACK */ - - ep = crypt( key, salt ); + ep = crypt(key, salt); /* strcmp returns 0 if same */ - if( strcmp( ep, pwd->pw_passwd ) != 0 ) - { - LogPrintf( LogLCP, "PasswdAuth - user (%s,%s) authentication failed\n", - name, key ); + if (strcmp(ep, pwd->pw_passwd) != 0) { + LogPrintf(LogLCP, "PasswdAuth - user (%s,%s) authentication failed\n", + name, key); endpwent(); - return 0; /* false - failed to authenticate (didn't match up) */ + return 0; /* false - failed to authenticate (didn't + * match up) */ } /* - * now we log them in... we have a static login flag so we don't - * do it twice :) + * now we log them in... we have a static login flag so we don't do it + * twice :) */ - if( ! logged_in ) - { - (void)time(&utmp.ut_time); - (void)strncpy(utmp.ut_name, name, sizeof(utmp.ut_name)); + if (!logged_in) { + (void) time(&utmp.ut_time); + (void) strncpy(utmp.ut_name, name, sizeof(utmp.ut_name)); /* - * if the first three chacters are "pap" trim them off before doing - * utmp entry (see sample.ppp-pap-dialup + * if the first three chacters are "pap" trim them off before doing utmp + * entry (see sample.ppp-pap-dialup */ - if( strncmp( "pap", dstsystem, 3 ) == 0 ) - (void)strncpy(utmp.ut_line, (char *)(dstsystem + 3), sizeof(utmp.ut_line)); + if (strncmp("pap", dstsystem, 3) == 0) + (void) strncpy(utmp.ut_line, (char *) (dstsystem + 3), sizeof(utmp.ut_line)); else - (void)strncpy(utmp.ut_line, dstsystem, sizeof(utmp.ut_line)); + (void) strncpy(utmp.ut_line, dstsystem, sizeof(utmp.ut_line)); - (void)strncpy(utmp.ut_host, "auto-ppp",sizeof(utmp.ut_host)); + (void) strncpy(utmp.ut_host, "auto-ppp", sizeof(utmp.ut_host)); login(&utmp); - (void)setlogin( pwd->pw_name ); + (void) setlogin(pwd->pw_name); - LogPrintf( LogLCP, "PasswdAuth has logged in user %s\n", name ); + LogPrintf(LogLCP, "PasswdAuth has logged in user %s\n", name); logged_in = 1; } - endpwent(); return 1; diff --git a/usr.sbin/ppp/phase.h b/usr.sbin/ppp/phase.h index 2bee812..e2386a6 100644 --- a/usr.sbin/ppp/phase.h +++ b/usr.sbin/ppp/phase.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: phase.h,v 1.5 1997/02/22 16:10:44 peter Exp $ + * $Id: phase.h,v 1.6 1997/06/09 03:27:35 brian Exp $ * * TODO: */ @@ -23,15 +23,16 @@ #ifndef _PHASE_H_ #define _PHASE_H_ -#define PHASE_DEAD 0 /* Link is dead */ -#define PHASE_ESTABLISH 1 /* Establishing link */ -#define PHASE_AUTHENTICATE 2 /* Being authenticated */ +#define PHASE_DEAD 0 /* Link is dead */ +#define PHASE_ESTABLISH 1 /* Establishing link */ +#define PHASE_AUTHENTICATE 2 /* Being authenticated */ #define PHASE_NETWORK 3 -#define PHASE_TERMINATE 4 /* Terminating link */ -#define PHASE_OSLINKED 5 /* The OS is linked up */ +#define PHASE_TERMINATE 4 /* Terminating link */ +#define PHASE_OSLINKED 5 /* The OS is linked up */ -int phase; /* Curent phase */ +int phase; /* Curent phase */ extern void NewPhase(int); extern char *PhaseNames[]; + #endif diff --git a/usr.sbin/ppp/pred.c b/usr.sbin/ppp/pred.c index 1091870..00503896 100644 --- a/usr.sbin/ppp/pred.c +++ b/usr.sbin/ppp/pred.c @@ -5,7 +5,7 @@ /* * - * $Id: pred.c,v 1.12 1997/06/09 03:27:35 brian Exp $ + * $Id: pred.c,v 1.13 1997/06/09 23:38:37 brian Exp $ * * pred.c -- Test program for Dave Rand's rendition of the * predictor algorithm @@ -28,105 +28,100 @@ static unsigned char InputGuessTable[65536]; static unsigned char OutputGuessTable[65536]; static int -compress(source, dest, len) -unsigned char *source, *dest; -int len; +compress(u_char * source, u_char * dest, int len) { - int i, bitmask; - unsigned char *flagdest, flags, *orgdest; - - orgdest = dest; - while (len) { - flagdest = dest++; flags = 0; /* All guess wrong initially */ - for (bitmask=1, i=0; i < 8 && len; i++, bitmask <<= 1) { - if (OutputGuessTable[oHash] == *source) { - flags |= bitmask; /* Guess was right - don't output */ - } else { - OutputGuessTable[oHash] = *source; - *dest++ = *source; /* Guess wrong, output char */ - } - OHASH(*source++);len--; - } - *flagdest = flags; + int i, bitmask; + unsigned char *flagdest, flags, *orgdest; + + orgdest = dest; + while (len) { + flagdest = dest++; + flags = 0; /* All guess wrong initially */ + for (bitmask = 1, i = 0; i < 8 && len; i++, bitmask <<= 1) { + if (OutputGuessTable[oHash] == *source) { + flags |= bitmask; /* Guess was right - don't output */ + } else { + OutputGuessTable[oHash] = *source; + *dest++ = *source; /* Guess wrong, output char */ + } + OHASH(*source++); + len--; } - return(dest - orgdest); + *flagdest = flags; + } + return (dest - orgdest); } static void -SyncTable(source, dest, len) -unsigned char *source, *dest; -int len; +SyncTable(u_char * source, u_char * dest, int len) { - while (len--) { - if (InputGuessTable[iHash] != *source) { - InputGuessTable[iHash] = *source; - } - IHASH(*dest++ = *source++); + while (len--) { + if (InputGuessTable[iHash] != *source) { + InputGuessTable[iHash] = *source; } + IHASH(*dest++ = *source++); + } } static int -decompress(source, dest, len) -unsigned char *source, *dest; -int len; +decompress(u_char * source, u_char * dest, int len) { - int i, bitmask; - unsigned char flags, *orgdest; - - orgdest = dest; - while (len) { - flags = *source++; - len--; - for (i=0, bitmask = 1; i < 8; i++, bitmask <<= 1) { - if (flags & bitmask) { - *dest = InputGuessTable[iHash]; /* Guess correct */ - } else { - if (!len) - break; /* we seem to be really done -- cabo */ - InputGuessTable[iHash] = *source; /* Guess wrong */ - *dest = *source++; /* Read from source */ - len--; - } - IHASH(*dest++); - } + int i, bitmask; + unsigned char flags, *orgdest; + + orgdest = dest; + while (len) { + flags = *source++; + len--; + for (i = 0, bitmask = 1; i < 8; i++, bitmask <<= 1) { + if (flags & bitmask) { + *dest = InputGuessTable[iHash]; /* Guess correct */ + } else { + if (!len) + break; /* we seem to be really done -- cabo */ + InputGuessTable[iHash] = *source; /* Guess wrong */ + *dest = *source++; /* Read from source */ + len--; + } + IHASH(*dest++); } - return(dest - orgdest); + } + return (dest - orgdest); } void -Pred1Init(direction) -int direction; +Pred1Init(int direction) { - if (direction & 1) { /* Input part */ + if (direction & 1) { /* Input part */ iHash = 0; bzero(InputGuessTable, sizeof(InputGuessTable)); } - if (direction & 2) { /* Output part */ + if (direction & 2) { /* Output part */ oHash = 0; bzero(OutputGuessTable, sizeof(OutputGuessTable)); } } void -Pred1Output(int pri, u_short proto, struct mbuf *bp) +Pred1Output(int pri, u_short proto, struct mbuf * bp) { struct mbuf *mwp; u_char *cp, *wp, *hp; int orglen, len; - u_char bufp[MAX_MTU+2]; + u_char bufp[MAX_MTU + 2]; u_short fcs; orglen = plength(bp) + 2; /* add count of proto */ - mwp = mballoc((orglen+2)/8*9+12, MB_HDLCOUT); + mwp = mballoc((orglen + 2) / 8 * 9 + 12, MB_HDLCOUT); hp = wp = MBUF_CTOP(mwp); cp = bufp; *wp++ = *cp++ = orglen >> 8; *wp++ = *cp++ = orglen & 0377; *cp++ = proto >> 8; *cp++ = proto & 0377; - mbread(bp, cp, orglen-2); - fcs = HdlcFcs(INITFCS, bufp, 2+orglen); + mbread(bp, cp, orglen - 2); + fcs = HdlcFcs(INITFCS, bufp, 2 + orglen); fcs = ~fcs; len = compress(bufp + 2, wp, orglen); @@ -137,7 +132,7 @@ Pred1Output(int pri, u_short proto, struct mbuf *bp) wp += len; CcpInfo.compout += len; } else { - bcopy(bufp+2, wp, orglen); + bcopy(bufp + 2, wp, orglen); wp += orglen; CcpInfo.compout += orglen; } @@ -149,8 +144,7 @@ Pred1Output(int pri, u_short proto, struct mbuf *bp) } void -Pred1Input(bp) -struct mbuf *bp; +Pred1Input(struct mbuf * bp) { u_char *cp, *pp; int len, olen, len1; @@ -158,7 +152,7 @@ struct mbuf *bp; u_char *bufp; u_short fcs, proto; - wp = mballoc(MAX_MTU+2, MB_IPIN); + wp = mballoc(MAX_MTU + 2, MB_IPIN); cp = MBUF_CTOP(bp); olen = plength(bp); pp = bufp = MBUF_CTOP(wp); @@ -171,7 +165,7 @@ struct mbuf *bp; len1 = decompress(cp, pp, olen - 4); CcpInfo.compin += olen; len &= 0x7fff; - if (len != len1) { /* Error is detected. Send reset request */ + if (len != len1) { /* Error is detected. Send reset request */ LogPrintf(LogLCP, "%s: Length Error\n", CcpFsm.name); CcpSendResetReq(&CcpFsm); pfree(bp); @@ -186,12 +180,12 @@ struct mbuf *bp; cp += len; pp += len; } - *pp++ = *cp++; /* CRC */ + *pp++ = *cp++; /* CRC */ *pp++ = *cp++; fcs = HdlcFcs(INITFCS, bufp, wp->cnt = pp - bufp); if (fcs != GOODFCS) LogPrintf(LogDEBUG, "Pred1Input: fcs = 0x%04x (%s), len = 0x%x," - " olen = 0x%x\n", fcs, (fcs == GOODFCS)? "good" : "bad", + " olen = 0x%x\n", fcs, (fcs == GOODFCS) ? "good" : "bad", len, olen); if (fcs == GOODFCS) { wp->offset += 2; /* skip length */ @@ -207,12 +201,10 @@ struct mbuf *bp; proto = (proto << 8) | *pp++; } DecodePacket(proto, wp); - } - else - { - LogDumpBp(LogHDLC, "Bad FCS", wp); - CcpSendResetReq(&CcpFsm); - pfree(wp); + } else { + LogDumpBp(LogHDLC, "Bad FCS", wp); + CcpSendResetReq(&CcpFsm); + pfree(wp); } pfree(bp); } diff --git a/usr.sbin/ppp/pred.h b/usr.sbin/ppp/pred.h index 356a034..26b139e 100644 --- a/usr.sbin/ppp/pred.h +++ b/usr.sbin/ppp/pred.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: pred.h,v 1.3 1997/02/22 16:10:48 peter Exp $ + * $Id: pred.h,v 1.4 1997/06/09 03:27:35 brian Exp $ * * TODO: */ @@ -23,7 +23,8 @@ #ifndef _PRED_H_ #define _PRED_H_ -extern void Pred1Output(int, u_short, struct mbuf *bp); -extern void Pred1Input(struct mbuf*); +extern void Pred1Output(int, u_short, struct mbuf * bp); +extern void Pred1Input(struct mbuf *); extern void Pred1Init(int); + #endif diff --git a/usr.sbin/ppp/route.c b/usr.sbin/ppp/route.c index cd69a4f..2f2f57f 100644 --- a/usr.sbin/ppp/route.c +++ b/usr.sbin/ppp/route.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: route.c,v 1.16 1997/06/20 23:43:35 brian Exp $ + * $Id: route.c,v 1.17 1997/07/28 01:02:27 brian Exp $ * */ #include <sys/types.h> @@ -54,11 +54,10 @@ struct rtmsg { static int seqno; void -OsSetRoute(cmd, dst, gateway, mask) -int cmd; -struct in_addr dst; -struct in_addr gateway; -struct in_addr mask; +OsSetRoute(int cmd, + struct in_addr dst, + struct in_addr gateway, + struct in_addr mask) { struct rtmsg rtmes; int s, nb, wb; @@ -71,7 +70,6 @@ struct in_addr mask; LogPrintf(LogERROR, "OsSetRoute: socket: %s", strerror(errno)); return; } - bzero(&rtmes, sizeof(rtmes)); rtmes.m_rtm.rtm_version = RTM_VERSION; rtmes.m_rtm.rtm_type = cmd; @@ -94,11 +92,10 @@ struct in_addr mask; bcopy(&rtdata, cp, 16); cp += 16; } - if (dst.s_addr == INADDR_ANY) mask.s_addr = INADDR_ANY; - lp = (u_long *)cp; + lp = (u_long *) cp; if (mask.s_addr) { *lp++ = 8; @@ -108,68 +105,84 @@ struct in_addr mask; *lp = 0; cp += sizeof(u_long); - nb = cp - (char *)&rtmes; + nb = cp - (char *) &rtmes; rtmes.m_rtm.rtm_msglen = nb; wb = write(s, &rtmes, nb); if (wb < 0) { LogPrintf(LogTCPIP, "OsSetRoute: Dst = %s\n", inet_ntoa(dst)); LogPrintf(LogTCPIP, "OsSetRoute: Gateway = %s\n", inet_ntoa(gateway)); LogPrintf(LogTCPIP, "OsSetRoute: Mask = %s\n", inet_ntoa(mask)); - switch(rtmes.m_rtm.rtm_errno) { - case EEXIST: - LogPrintf(LogTCPIP, "Add route failed: Already exists\n"); - break; - case ESRCH: - LogPrintf(LogTCPIP, "Del route failed: Non-existent\n"); - break; - case ENOBUFS: - default: - LogPrintf(LogTCPIP, "Add/Del route failed: %s\n", - strerror(rtmes.m_rtm.rtm_errno)); - break; + switch (rtmes.m_rtm.rtm_errno) { + case EEXIST: + LogPrintf(LogTCPIP, "Add route failed: Already exists\n"); + break; + case ESRCH: + LogPrintf(LogTCPIP, "Del route failed: Non-existent\n"); + break; + case ENOBUFS: + default: + LogPrintf(LogTCPIP, "Add/Del route failed: %s\n", + strerror(rtmes.m_rtm.rtm_errno)); + break; } } - LogPrintf(LogDEBUG, "wrote %d: dst = %x, gateway = %x\n", nb, - dst.s_addr, gateway.s_addr); + dst.s_addr, gateway.s_addr); close(s); } static void -p_sockaddr(sa, width) -struct sockaddr *sa; -int width; +p_sockaddr(struct sockaddr * sa, int width) { if (VarTerm) { register char *cp; - register struct sockaddr_in *sin = (struct sockaddr_in *)sa; + register struct sockaddr_in *sin = (struct sockaddr_in *) sa; cp = (sin->sin_addr.s_addr == 0) ? "default" : - inet_ntoa(sin->sin_addr); + inet_ntoa(sin->sin_addr); fprintf(VarTerm, "%-*.*s ", width, width, cp); } } struct bits { short b_mask; - char b_val; -} bits[] = { - { RTF_UP, 'U' }, - { RTF_GATEWAY, 'G' }, - { RTF_HOST, 'H' }, - { RTF_DYNAMIC, 'D' }, - { RTF_MODIFIED, 'M' }, - { RTF_CLONING, 'C' }, - { RTF_XRESOLVE, 'X' }, - { RTF_LLINFO, 'L' }, - { RTF_REJECT, 'R' }, - { 0 } + char b_val; +} bits[] = { + + { + RTF_UP, 'U' + }, + { + RTF_GATEWAY, 'G' + }, + { + RTF_HOST, 'H' + }, + { + RTF_DYNAMIC, 'D' + }, + { + RTF_MODIFIED, 'M' + }, + { + RTF_CLONING, 'C' + }, + { + RTF_XRESOLVE, 'X' + }, + { + RTF_LLINFO, 'L' + }, + { + RTF_REJECT, 'R' + }, + { + 0 + } }; static void -p_flags(f, format) -register int f; -char *format; +p_flags(int f, char *format) { if (VarTerm) { char name[33], *flags; @@ -177,7 +190,7 @@ char *format; for (flags = name; p->b_mask; p++) if (p->b_mask & f) - *flags++ = p->b_val; + *flags++ = p->b_val; *flags = '\0'; fprintf(VarTerm, format, name); } @@ -206,50 +219,48 @@ ShowRoute() mib[5] = 0; if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { LogPrintf(LogERROR, "sysctl: estimate: %s", strerror(errno)); - return(1); + return (1); } - if (needed < 0) - return(1); + return (1); sp = malloc(needed); if (sp == NULL) - return(1); + return (1); if (sysctl(mib, 6, sp, &needed, NULL, 0) < 0) { LogPrintf(LogERROR, "sysctl: getroute: %s", strerror(errno)); free(sp); - return(1); + return (1); } - ep = sp + needed; for (cp = sp; cp < ep; cp += rtm->rtm_msglen) { - rtm = (struct rt_msghdr *)cp; - sa = (struct sockaddr *)(rtm + 1); + rtm = (struct rt_msghdr *) cp; + sa = (struct sockaddr *) (rtm + 1); mask = 0xffffffff; if (rtm->rtm_addrs == RTA_DST) p_sockaddr(sa, 36); else { - wp = (u_char *)cp + rtm->rtm_msglen; + wp = (u_char *) cp + rtm->rtm_msglen; p_sockaddr(sa, 16); if (sa->sa_len == 0) sa->sa_len = sizeof(long); - sa = (struct sockaddr *)(sa->sa_len + (char *)sa); + sa = (struct sockaddr *) (sa->sa_len + (char *) sa); p_sockaddr(sa, 18); - lp = (int *)(sa->sa_len + (char *)sa); - if ((char *)lp < (char *)wp && *lp) { + lp = (int *) (sa->sa_len + (char *) sa); + if ((char *) lp < (char *) wp && *lp) { LogPrintf(LogDEBUG, " flag = %x, rest = %d", rtm->rtm_flags, *lp); - wp = (u_char *)(lp + 1); + wp = (u_char *) (lp + 1); mask = 0; - for (nb = *(char *)lp; nb > 4; nb--) { + for (nb = *(char *) lp; nb > 4; nb--) { mask <<= 8; mask |= *wp++; } - for (nb = 8 - *(char *)lp; nb > 0; nb--) + for (nb = 8 - *(char *) lp; nb > 0; nb--) mask <<= 8; } } fprintf(VarTerm, "%08lx ", mask); - p_flags(rtm->rtm_flags & (RTF_UP|RTF_GATEWAY|RTF_HOST), "%-6.6s "); + p_flags(rtm->rtm_flags & (RTF_UP | RTF_GATEWAY | RTF_HOST), "%-6.6s "); fprintf(VarTerm, "(%d)\n", rtm->rtm_index); } free(sp); @@ -260,8 +271,7 @@ ShowRoute() * Delete routes associated with our interface */ void -DeleteIfRoutes(all) -int all; +DeleteIfRoutes(int all) { struct rt_msghdr *rtm; struct sockaddr *sa; @@ -285,7 +295,6 @@ int all; LogPrintf(LogERROR, "sysctl: estimate: %s", strerror(errno)); return; } - if (needed < 0) return; @@ -301,28 +310,28 @@ int all; ep = sp + needed; for (cp = sp; cp < ep; cp += rtm->rtm_msglen) { - rtm = (struct rt_msghdr *)cp; - sa = (struct sockaddr *)(rtm + 1); + rtm = (struct rt_msghdr *) cp; + sa = (struct sockaddr *) (rtm + 1); LogPrintf(LogDEBUG, "DeleteIfRoutes: addrs: %x, index: %d, flags: %x," - " dstnet: %s\n", - rtm->rtm_addrs, rtm->rtm_index, rtm->rtm_flags, - inet_ntoa(((struct sockaddr_in *)sa)->sin_addr)); + " dstnet: %s\n", + rtm->rtm_addrs, rtm->rtm_index, rtm->rtm_flags, + inet_ntoa(((struct sockaddr_in *) sa)->sin_addr)); if (rtm->rtm_addrs != RTA_DST && - (rtm->rtm_index == IfIndex) && - (all || (rtm->rtm_flags & RTF_GATEWAY))) { + (rtm->rtm_index == IfIndex) && + (all || (rtm->rtm_flags & RTF_GATEWAY))) { LogPrintf(LogDEBUG, "DeleteIfRoutes: Remove it\n"); - dstnet = ((struct sockaddr_in *)sa)->sin_addr; - wp = (u_char *)cp + rtm->rtm_msglen; + dstnet = ((struct sockaddr_in *) sa)->sin_addr; + wp = (u_char *) cp + rtm->rtm_msglen; if (sa->sa_len == 0) sa->sa_len = sizeof(long); - sa = (struct sockaddr *)(sa->sa_len + (char *)sa); - gateway = ((struct sockaddr_in *)sa)->sin_addr; - lp = (int *)(sa->sa_len + (char *)sa); + sa = (struct sockaddr *) (sa->sa_len + (char *) sa); + gateway = ((struct sockaddr_in *) sa)->sin_addr; + lp = (int *) (sa->sa_len + (char *) sa); mask = 0; - if ((char *)lp < (char *)wp && *lp) { + if ((char *) lp < (char *) wp && *lp) { LogPrintf(LogDEBUG, "DeleteIfRoutes: flag = %x, rest = %d", rtm->rtm_flags, *lp); - wp = (u_char *)(lp + 1); + wp = (u_char *) (lp + 1); for (nb = *lp; nb > 4; nb--) { mask <<= 8; mask |= *wp++; @@ -334,7 +343,7 @@ int all; LogPrintf(LogDEBUG, "DeleteIfRoutes: Gw: %s\n", inet_ntoa(gateway)); LogPrintf(LogDEBUG, "DeleteIfRoutes: Index: %d\n", rtm->rtm_index); if (dstnet.s_addr == INADDR_ANY) - mask = INADDR_ANY; + mask = INADDR_ANY; maddr.s_addr = htonl(mask); OsSetRoute(RTM_DELETE, dstnet, gateway, maddr); } @@ -347,41 +356,41 @@ int all; */ int -GetIfIndex(name) -char *name; +GetIfIndex(char *name) { char *buffer; struct ifreq *ifrp; int s, len, elen, index; struct ifconf ifconfs; + /* struct ifreq reqbuf[256]; -- obsoleted :) */ int oldbufsize, bufsize = sizeof(struct ifreq); s = socket(AF_INET, SOCK_DGRAM, 0); if (s < 0) { LogPrintf(LogERROR, "GetIfIndex: socket: %s", strerror(errno)); - return(-1); + return (-1); } + buffer = malloc(bufsize); /* allocate first buffer */ + ifconfs.ifc_len = bufsize; /* Initial setting */ - buffer = malloc(bufsize); /* allocate first buffer */ - ifconfs.ifc_len = bufsize; /* Initial setting */ /* - * Iterate through here until we don't get many more data + * Iterate through here until we don't get many more data */ do { - oldbufsize = ifconfs.ifc_len; - bufsize += 1+sizeof(struct ifreq); - buffer = realloc((void *)buffer, bufsize); /* Make it bigger */ - LogPrintf(LogDEBUG, "GetIfIndex: Growing buffer to %d\n", bufsize); - ifconfs.ifc_len = bufsize; - ifconfs.ifc_buf = buffer; - if (ioctl(s, SIOCGIFCONF, &ifconfs) < 0) { - LogPrintf(LogERROR, "ioctl(SIOCGIFCONF): %s", strerror(errno)); - close(s); - free(buffer); - return(-1); - } + oldbufsize = ifconfs.ifc_len; + bufsize += 1 + sizeof(struct ifreq); + buffer = realloc((void *) buffer, bufsize); /* Make it bigger */ + LogPrintf(LogDEBUG, "GetIfIndex: Growing buffer to %d\n", bufsize); + ifconfs.ifc_len = bufsize; + ifconfs.ifc_buf = buffer; + if (ioctl(s, SIOCGIFCONF, &ifconfs) < 0) { + LogPrintf(LogERROR, "ioctl(SIOCGIFCONF): %s", strerror(errno)); + close(s); + free(buffer); + return (-1); + } } while (ifconfs.ifc_len > oldbufsize); ifrp = ifconfs.ifc_req; @@ -394,20 +403,19 @@ char *name; index, IFNAMSIZ, IFNAMSIZ, ifrp->ifr_name, ifrp->ifr_addr.sa_family, elen); if (strcmp(ifrp->ifr_name, name) == 0) { - IfIndex = index; + IfIndex = index; close(s); free(buffer); - return(index); + return (index); } index++; } - len -= elen; - ifrp = (struct ifreq *)((char *)ifrp + elen); + ifrp = (struct ifreq *) ((char *) ifrp + elen); ifrp++; } close(s); free(buffer); - return(-1); + return (-1); } diff --git a/usr.sbin/ppp/route.h b/usr.sbin/ppp/route.h index 43f1011..b5e3523 100644 --- a/usr.sbin/ppp/route.h +++ b/usr.sbin/ppp/route.h @@ -17,11 +17,12 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: route.h,v 1.3 1997/02/22 16:10:50 peter Exp $ + * $Id: route.h,v 1.4 1997/06/09 03:27:36 brian Exp $ * */ #ifndef _ROUTE_H_ #define _ROUTE_H_ int GetIfIndex(char *); + #endif diff --git a/usr.sbin/ppp/server.c b/usr.sbin/ppp/server.c index ddff807..db9635e 100644 --- a/usr.sbin/ppp/server.c +++ b/usr.sbin/ppp/server.c @@ -23,78 +23,77 @@ static char *rm; int ServerLocalOpen(const char *name, mode_t mask) { - int s; + int s; - ifsun.sun_len = strlen(name); - if (ifsun.sun_len > sizeof ifsun.sun_path - 1) { - LogPrintf(LogERROR, "Local: %s: Path too long\n", name); - return 1; - } - ifsun.sun_family = AF_LOCAL; - strcpy(ifsun.sun_path, name); - - s = socket(PF_LOCAL, SOCK_STREAM, 0); - if (s < 0) { - LogPrintf(LogERROR, "Local: socket: %s\n", strerror(errno)); - return 2; - } + ifsun.sun_len = strlen(name); + if (ifsun.sun_len > sizeof ifsun.sun_path - 1) { + LogPrintf(LogERROR, "Local: %s: Path too long\n", name); + return 1; + } + ifsun.sun_family = AF_LOCAL; + strcpy(ifsun.sun_path, name); - setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &s, sizeof s); - mask = umask(mask); - if (bind(s, (struct sockaddr *) &ifsun, sizeof(ifsun)) < 0) { - umask(mask); - LogPrintf(LogERROR, "Local: bind: %s\n", strerror(errno)); - if (errno == EADDRINUSE && VarTerm) - fprintf(VarTerm, "Wait for a while, then try again.\n"); - close(s); - unlink(name); - return 3; - } + s = socket(PF_LOCAL, SOCK_STREAM, 0); + if (s < 0) { + LogPrintf(LogERROR, "Local: socket: %s\n", strerror(errno)); + return 2; + } + setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &s, sizeof s); + mask = umask(mask); + if (bind(s, (struct sockaddr *) & ifsun, sizeof(ifsun)) < 0) { umask(mask); - if (listen(s, 5) != 0) { - LogPrintf(LogERROR, "Local: Unable to listen to socket - OS overload?\n"); - close(s); - unlink(name); - return 4; - } - ServerClose(); - server = s; - rm = ifsun.sun_path; - LogPrintf(LogPHASE, "Listening at local socket %s.\n", name); - return 0; + LogPrintf(LogERROR, "Local: bind: %s\n", strerror(errno)); + if (errno == EADDRINUSE && VarTerm) + fprintf(VarTerm, "Wait for a while, then try again.\n"); + close(s); + unlink(name); + return 3; + } + umask(mask); + if (listen(s, 5) != 0) { + LogPrintf(LogERROR, "Local: Unable to listen to socket - OS overload?\n"); + close(s); + unlink(name); + return 4; + } + ServerClose(); + server = s; + rm = ifsun.sun_path; + LogPrintf(LogPHASE, "Listening at local socket %s.\n", name); + return 0; } int ServerTcpOpen(int port) { - struct sockaddr_in ifsin; - int s; + struct sockaddr_in ifsin; + int s; - s = socket(PF_INET, SOCK_STREAM, 0); - if (s < 0) { - LogPrintf(LogERROR, "Tcp: socket: %s\n", strerror(errno)); - return 5; - } - ifsin.sin_family = AF_INET; - ifsin.sin_addr.s_addr = INADDR_ANY; - ifsin.sin_port = htons(port); - setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &s, sizeof s); - if (bind(s, (struct sockaddr *) &ifsin, sizeof(ifsin)) < 0) { - LogPrintf(LogERROR, "Tcp: bind: %s\n", strerror(errno)); - if (errno == EADDRINUSE && VarTerm) - fprintf(VarTerm, "Wait for a while, then try again.\n"); - close(s); - return 6; - } - if (listen(s, 5) != 0) { - LogPrintf(LogERROR, "Tcp: Unable to listen to socket - OS overload?\n"); - close(s); - return 7; - } - ServerClose(); - server = s; - LogPrintf(LogPHASE, "Listening at port %d.\n", port); - return 0; + s = socket(PF_INET, SOCK_STREAM, 0); + if (s < 0) { + LogPrintf(LogERROR, "Tcp: socket: %s\n", strerror(errno)); + return 5; + } + ifsin.sin_family = AF_INET; + ifsin.sin_addr.s_addr = INADDR_ANY; + ifsin.sin_port = htons(port); + setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &s, sizeof s); + if (bind(s, (struct sockaddr *) & ifsin, sizeof(ifsin)) < 0) { + LogPrintf(LogERROR, "Tcp: bind: %s\n", strerror(errno)); + if (errno == EADDRINUSE && VarTerm) + fprintf(VarTerm, "Wait for a while, then try again.\n"); + close(s); + return 6; + } + if (listen(s, 5) != 0) { + LogPrintf(LogERROR, "Tcp: Unable to listen to socket - OS overload?\n"); + close(s); + return 7; + } + ServerClose(); + server = s; + LogPrintf(LogPHASE, "Listening at port %d.\n", port); + return 0; } void diff --git a/usr.sbin/ppp/sig.c b/usr.sbin/ppp/sig.c index b9c1451..1abe6b1 100644 --- a/usr.sbin/ppp/sig.c +++ b/usr.sbin/ppp/sig.c @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: sig.c,v 1.6 1997/03/13 12:45:33 brian Exp $ + * $Id: sig.c,v 1.7 1997/06/09 03:27:36 brian Exp $ * * TODO: * @@ -44,52 +44,57 @@ static sig_type handler[NSIG]; /* all start at SIG_DFL */ /* Record a signal in the "caused" array */ -static void signal_recorder(int sig) { - caused[sig-1]++; +static void +signal_recorder(int sig) +{ + caused[sig - 1]++; } /* - set up signal_recorder, and record handler as the function to ultimately - call in handle_signal() + * Set up signal_recorder, and record handler as the function to ultimately + * call in handle_signal() */ -sig_type pending_signal(int sig,sig_type fn) { - sig_type Result; +sig_type +pending_signal(int sig, sig_type fn) +{ + sig_type Result; - if (sig <= 0 || sig > NSIG) { - /* Oops - we must be a bit out of date (too many sigs ?) */ - LogPrintf(LogALERT, "Eeek! %s:%s: I must be out of date!\n", - __FILE__,__LINE__); - return signal(sig,fn); - } - - Result = handler[sig-1]; - if (fn == SIG_DFL || fn == SIG_IGN) { - signal(sig,fn); - handler[sig-1] = (sig_type)0; - } else { - handler[sig-1] = fn; - signal(sig,signal_recorder); - } - caused[sig-1] = 0; - return Result; + if (sig <= 0 || sig > NSIG) { + /* Oops - we must be a bit out of date (too many sigs ?) */ + LogPrintf(LogALERT, "Eeek! %s:%s: I must be out of date!\n", + __FILE__, __LINE__); + return signal(sig, fn); + } + Result = handler[sig - 1]; + if (fn == SIG_DFL || fn == SIG_IGN) { + signal(sig, fn); + handler[sig - 1] = (sig_type) 0; + } else { + handler[sig - 1] = fn; + signal(sig, signal_recorder); + } + caused[sig - 1] = 0; + return Result; } /* Call the handlers for any pending signals */ -void handle_signals() { - int sig; - int got; +void +handle_signals() +{ + int sig; + int got; - do { - got = 0; - for (sig = 0; sig < NSIG; sig++) - if (caused[sig]) { - caused[sig]--; - got++; - (*handler[sig])(sig+1); - } - } while(got); + do { + got = 0; + for (sig = 0; sig < NSIG; sig++) + if (caused[sig]) { + caused[sig]--; + got++; + (*handler[sig]) (sig + 1); + } + } while (got); } diff --git a/usr.sbin/ppp/sig.h b/usr.sbin/ppp/sig.h index 1584edc..63afb51 100644 --- a/usr.sbin/ppp/sig.h +++ b/usr.sbin/ppp/sig.h @@ -26,13 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: sig.h,v 1.7 1997/03/13 12:45:35 brian Exp $ + * $Id: sig.h,v 1.8 1997/06/09 03:27:37 brian Exp $ * * TODO: * */ -typedef void (*sig_type)(int); +typedef void (*sig_type) (int); /* Call this instead of signal() */ extern sig_type pending_signal(int, sig_type); diff --git a/usr.sbin/ppp/slcompress.c b/usr.sbin/ppp/slcompress.c index 39babc9..77aaa6f 100644 --- a/usr.sbin/ppp/slcompress.c +++ b/usr.sbin/ppp/slcompress.c @@ -17,13 +17,14 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: slcompress.c,v 1.8 1997/02/22 16:10:54 peter Exp $ + * $Id: slcompress.c,v 1.9 1997/06/09 03:27:37 brian Exp $ * * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989: * - Initial distribution. */ #ifndef lint -static char const rcsid[] = "$Id: slcompress.c,v 1.8 1997/02/22 16:10:54 peter Exp $"; +static char const rcsid[] = "$Id: slcompress.c,v 1.9 1997/06/09 03:27:37 brian Exp $"; + #endif #include "defs.h" @@ -46,23 +47,22 @@ struct slstat slstat; #endif void -sl_compress_init(comp) - struct slcompress *comp; +sl_compress_init(struct slcompress * comp) { - register u_int i; - register struct cstate *tstate = comp->tstate; - - bzero((char *)comp, sizeof(*comp)); - for (i = MAX_STATES - 1; i > 0; --i) { - tstate[i].cs_id = i; - tstate[i].cs_next = &tstate[i - 1]; - } - tstate[0].cs_next = &tstate[MAX_STATES - 1]; - tstate[0].cs_id = 0; - comp->last_cs = &tstate[0]; - comp->last_recv = 255; - comp->last_xmit = 255; - comp->flags = SLF_TOSS; + register u_int i; + register struct cstate *tstate = comp->tstate; + + bzero((char *) comp, sizeof(*comp)); + for (i = MAX_STATES - 1; i > 0; --i) { + tstate[i].cs_id = i; + tstate[i].cs_next = &tstate[i - 1]; + } + tstate[0].cs_next = &tstate[MAX_STATES - 1]; + tstate[0].cs_id = 0; + comp->last_cs = &tstate[0]; + comp->last_recv = 255; + comp->last_xmit = 255; + comp->flags = SLF_TOSS; } @@ -120,446 +120,449 @@ sl_compress_init(comp) u_char -sl_compress_tcp(m, ip, comp, compress_cid) - struct mbuf *m; - register struct ip *ip; - struct slcompress *comp; - int compress_cid; +sl_compress_tcp(struct mbuf * m, + struct ip * ip, + struct slcompress * comp, + int compress_cid) { - register struct cstate *cs = comp->last_cs->cs_next; - register u_int hlen = ip->ip_hl; - register struct tcphdr *oth; - register struct tcphdr *th; - register u_int deltaS, deltaA; - register u_int changes = 0; - u_char new_seq[16]; - register u_char *cp = new_seq; - - /* - * Bail if this is an IP fragment or if the TCP packet isn't - * `compressible' (i.e., ACK isn't set or some other control bit is - * set). (We assume that the caller has already made sure the - * packet is IP proto TCP). - */ - if ((ip->ip_off & htons(0x3fff)) || m->cnt < 40) { - LogPrintf(LogDEBUG, "??? 1 ip_off = %x, cnt = %d\n", - ip->ip_off, m->cnt); - LogDumpBp(LogDEBUG, "", m); - return (TYPE_IP); - } - - th = (struct tcphdr *)&((int *)ip)[hlen]; - if ((th->th_flags & (TH_SYN|TH_FIN|TH_RST|TH_ACK)) != TH_ACK) { - LogPrintf(LogDEBUG, "??? 2 th_flags = %x\n", th->th_flags); - LogDumpBp(LogDEBUG, "", m); - return (TYPE_IP); - } - - /* - * Packet is compressible -- we're going to send either a - * COMPRESSED_TCP or UNCOMPRESSED_TCP packet. Either way we need - * to locate (or create) the connection state. Special case the - * most recently used connection since it's most likely to be used - * again & we don't have to do any reordering if it's used. - */ - INCR(sls_packets) - if (ip->ip_src.s_addr != cs->cs_ip.ip_src.s_addr || - ip->ip_dst.s_addr != cs->cs_ip.ip_dst.s_addr || - *(int *)th != ((int *)&cs->cs_ip)[cs->cs_ip.ip_hl]) { - /* - * Wasn't the first -- search for it. - * - * States are kept in a circularly linked list with - * last_cs pointing to the end of the list. The - * list is kept in lru order by moving a state to the - * head of the list whenever it is referenced. Since - * the list is short and, empirically, the connection - * we want is almost always near the front, we locate - * states via linear search. If we don't find a state - * for the datagram, the oldest state is (re-)used. - */ - register struct cstate *lcs; - register struct cstate *lastcs = comp->last_cs; - - do { - lcs = cs; cs = cs->cs_next; - INCR(sls_searches) - if (ip->ip_src.s_addr == cs->cs_ip.ip_src.s_addr - && ip->ip_dst.s_addr == cs->cs_ip.ip_dst.s_addr - && *(int *)th == ((int *)&cs->cs_ip)[cs->cs_ip.ip_hl]) - goto found; - } while (cs != lastcs); - - /* - * Didn't find it -- re-use oldest cstate. Send an - * uncompressed packet that tells the other side what - * connection number we're using for this conversation. - * Note that since the state list is circular, the oldest - * state points to the newest and we only need to set - * last_cs to update the lru linkage. - */ - INCR(sls_misses) - comp->last_cs = lcs; + register struct cstate *cs = comp->last_cs->cs_next; + register u_int hlen = ip->ip_hl; + register struct tcphdr *oth; + register struct tcphdr *th; + register u_int deltaS, deltaA; + register u_int changes = 0; + u_char new_seq[16]; + register u_char *cp = new_seq; + + /* + * Bail if this is an IP fragment or if the TCP packet isn't `compressible' + * (i.e., ACK isn't set or some other control bit is set). (We assume that + * the caller has already made sure the packet is IP proto TCP). + */ + if ((ip->ip_off & htons(0x3fff)) || m->cnt < 40) { + LogPrintf(LogDEBUG, "??? 1 ip_off = %x, cnt = %d\n", + ip->ip_off, m->cnt); + LogDumpBp(LogDEBUG, "", m); + return (TYPE_IP); + } + th = (struct tcphdr *) & ((int *) ip)[hlen]; + if ((th->th_flags & (TH_SYN | TH_FIN | TH_RST | TH_ACK)) != TH_ACK) { + LogPrintf(LogDEBUG, "??? 2 th_flags = %x\n", th->th_flags); + LogDumpBp(LogDEBUG, "", m); + return (TYPE_IP); + } + + /* + * Packet is compressible -- we're going to send either a COMPRESSED_TCP or + * UNCOMPRESSED_TCP packet. Either way we need to locate (or create) the + * connection state. Special case the most recently used connection since + * it's most likely to be used again & we don't have to do any reordering + * if it's used. + */ + INCR(sls_packets) + if (ip->ip_src.s_addr != cs->cs_ip.ip_src.s_addr || + ip->ip_dst.s_addr != cs->cs_ip.ip_dst.s_addr || + *(int *) th != ((int *) &cs->cs_ip)[cs->cs_ip.ip_hl]) { + + /* + * Wasn't the first -- search for it. + * + * States are kept in a circularly linked list with last_cs pointing to the + * end of the list. The list is kept in lru order by moving a state to + * the head of the list whenever it is referenced. Since the list is + * short and, empirically, the connection we want is almost always near + * the front, we locate states via linear search. If we don't find a + * state for the datagram, the oldest state is (re-)used. + */ + register struct cstate *lcs; + register struct cstate *lastcs = comp->last_cs; + + do { + lcs = cs; + cs = cs->cs_next; + INCR(sls_searches) + if (ip->ip_src.s_addr == cs->cs_ip.ip_src.s_addr + && ip->ip_dst.s_addr == cs->cs_ip.ip_dst.s_addr + && *(int *) th == ((int *) &cs->cs_ip)[cs->cs_ip.ip_hl]) + goto found; + } while (cs != lastcs); + + /* + * Didn't find it -- re-use oldest cstate. Send an uncompressed packet + * that tells the other side what connection number we're using for this + * conversation. Note that since the state list is circular, the oldest + * state points to the newest and we only need to set last_cs to update + * the lru linkage. + */ + INCR(sls_misses) + comp->last_cs = lcs; #define THOFFSET(th) (th->th_off) - hlen += th->th_off; - hlen <<= 2; - if (hlen > m->cnt) - return(TYPE_IP); - goto uncompressed; - - found: - /* - * Found it -- move to the front on the connection list. - */ - if (cs == lastcs) - comp->last_cs = lcs; - else { - lcs->cs_next = cs->cs_next; - cs->cs_next = lastcs->cs_next; - lastcs->cs_next = cs; - } - } - - /* - * Make sure that only what we expect to change changed. The first - * line of the `if' checks the IP protocol version, header length & - * type of service. The 2nd line checks the "Don't fragment" bit. - * The 3rd line checks the time-to-live and protocol (the protocol - * check is unnecessary but costless). The 4th line checks the TCP - * header length. The 5th line checks IP options, if any. The 6th - * line checks TCP options, if any. If any of these things are - * different between the previous & current datagram, we send the - * current datagram `uncompressed'. - */ - oth = (struct tcphdr *)&((int *)&cs->cs_ip)[hlen]; - deltaS = hlen; - hlen += th->th_off; - hlen <<= 2; - if (hlen > m->cnt) - return(TYPE_IP); - - if (((u_short *)ip)[0] != ((u_short *)&cs->cs_ip)[0] || - ((u_short *)ip)[3] != ((u_short *)&cs->cs_ip)[3] || - ((u_short *)ip)[4] != ((u_short *)&cs->cs_ip)[4] || - THOFFSET(th) != THOFFSET(oth) || - (deltaS > 5 && - BCMP(ip + 1, &cs->cs_ip + 1, (deltaS - 5) << 2)) || - (THOFFSET(th) > 5 && - BCMP(th + 1, oth + 1, (THOFFSET(th) - 5) << 2))) { - goto uncompressed; - } - - /* - * Figure out which of the changing fields changed. The - * receiver expects changes in the order: urgent, window, - * ack, seq (the order minimizes the number of temporaries - * needed in this section of code). - */ - if (th->th_flags & TH_URG) { - deltaS = ntohs(th->th_urp); - ENCODEZ(deltaS); - changes |= NEW_U; - } else if (th->th_urp != oth->th_urp) { - /* argh! URG not set but urp changed -- a sensible - * implementation should never do this but RFC793 - * doesn't prohibit the change so we have to deal - * with it. */ - goto uncompressed; - } - - deltaS = (u_short)(ntohs(th->th_win) - ntohs(oth->th_win)); - if (deltaS) { - ENCODE(deltaS); - changes |= NEW_W; - } - - deltaA = ntohl(th->th_ack) - ntohl(oth->th_ack); - if (deltaA) { - if (deltaA > 0xffff) { - goto uncompressed; - } - ENCODE(deltaA); - changes |= NEW_A; - } - - deltaS = ntohl(th->th_seq) - ntohl(oth->th_seq); - if (deltaS) { - if (deltaS > 0xffff) { - goto uncompressed; - } - ENCODE(deltaS); - changes |= NEW_S; - } - - switch(changes) { - - case 0: - /* - * Nothing changed. If this packet contains data and the - * last one didn't, this is probably a data packet following - * an ack (normal on an interactive connection) and we send - * it compressed. Otherwise it's probably a retransmit, - * retransmitted ack or window probe. Send it uncompressed - * in case the other side missed the compressed version. - */ - if (ip->ip_len != cs->cs_ip.ip_len && - ntohs(cs->cs_ip.ip_len) == hlen) - break; - - /* (fall through) */ - - case SPECIAL_I: - case SPECIAL_D: - /* - * actual changes match one of our special case encodings -- - * send packet uncompressed. - */ - goto uncompressed; - - case NEW_S|NEW_A: - if (deltaS == deltaA && - deltaS == ntohs(cs->cs_ip.ip_len) - hlen) { - /* special case for echoed terminal traffic */ - changes = SPECIAL_I; - cp = new_seq; - } - break; - - case NEW_S: - if (deltaS == ntohs(cs->cs_ip.ip_len) - hlen) { - /* special case for data xfer */ - changes = SPECIAL_D; - cp = new_seq; - } - break; - } - - deltaS = ntohs(ip->ip_id) - ntohs(cs->cs_ip.ip_id); - if (deltaS != 1) { - ENCODEZ(deltaS); - changes |= NEW_I; - } - if (th->th_flags & TH_PUSH) - changes |= TCP_PUSH_BIT; - /* - * Grab the cksum before we overwrite it below. Then update our - * state with this packet's header. - */ - deltaA = ntohs(th->th_sum); - BCOPY(ip, &cs->cs_ip, hlen); - - /* - * We want to use the original packet as our compressed packet. - * (cp - new_seq) is the number of bytes we need for compressed - * sequence numbers. In addition we need one byte for the change - * mask, one for the connection id and two for the tcp checksum. - * So, (cp - new_seq) + 4 bytes of header are needed. hlen is how - * many bytes of the original packet to toss so subtract the two to - * get the new packet size. - */ - deltaS = cp - new_seq; - cp = (u_char *)ip; - - /* - * Since fastq traffic can jump ahead of the background traffic, - * we don't know what order packets will go on the line. In this - * case, we always send a "new" connection id so the receiver state - * stays synchronized. - */ + hlen += th->th_off; + hlen <<= 2; + if (hlen > m->cnt) + return (TYPE_IP); + goto uncompressed; + +found: + + /* + * Found it -- move to the front on the connection list. + */ + if (cs == lastcs) + comp->last_cs = lcs; + else { + lcs->cs_next = cs->cs_next; + cs->cs_next = lastcs->cs_next; + lastcs->cs_next = cs; + } + } + + /* + * Make sure that only what we expect to change changed. The first line of + * the `if' checks the IP protocol version, header length & type of + * service. The 2nd line checks the "Don't fragment" bit. The 3rd line + * checks the time-to-live and protocol (the protocol check is unnecessary + * but costless). The 4th line checks the TCP header length. The 5th line + * checks IP options, if any. The 6th line checks TCP options, if any. If + * any of these things are different between the previous & current + * datagram, we send the current datagram `uncompressed'. + */ + oth = (struct tcphdr *) & ((int *) &cs->cs_ip)[hlen]; + deltaS = hlen; + hlen += th->th_off; + hlen <<= 2; + if (hlen > m->cnt) + return (TYPE_IP); + + if (((u_short *) ip)[0] != ((u_short *) & cs->cs_ip)[0] || + ((u_short *) ip)[3] != ((u_short *) & cs->cs_ip)[3] || + ((u_short *) ip)[4] != ((u_short *) & cs->cs_ip)[4] || + THOFFSET(th) != THOFFSET(oth) || + (deltaS > 5 && + BCMP(ip + 1, &cs->cs_ip + 1, (deltaS - 5) << 2)) || + (THOFFSET(th) > 5 && + BCMP(th + 1, oth + 1, (THOFFSET(th) - 5) << 2))) { + goto uncompressed; + } + + /* + * Figure out which of the changing fields changed. The receiver expects + * changes in the order: urgent, window, ack, seq (the order minimizes the + * number of temporaries needed in this section of code). + */ + if (th->th_flags & TH_URG) { + deltaS = ntohs(th->th_urp); + ENCODEZ(deltaS); + changes |= NEW_U; + } else if (th->th_urp != oth->th_urp) { + + /* + * argh! URG not set but urp changed -- a sensible implementation should + * never do this but RFC793 doesn't prohibit the change so we have to + * deal with it. + */ + goto uncompressed; + } + deltaS = (u_short) (ntohs(th->th_win) - ntohs(oth->th_win)); + if (deltaS) { + ENCODE(deltaS); + changes |= NEW_W; + } + deltaA = ntohl(th->th_ack) - ntohl(oth->th_ack); + if (deltaA) { + if (deltaA > 0xffff) { + goto uncompressed; + } + ENCODE(deltaA); + changes |= NEW_A; + } + deltaS = ntohl(th->th_seq) - ntohl(oth->th_seq); + if (deltaS) { + if (deltaS > 0xffff) { + goto uncompressed; + } + ENCODE(deltaS); + changes |= NEW_S; + } + switch (changes) { + + case 0: + + /* + * Nothing changed. If this packet contains data and the last one didn't, + * this is probably a data packet following an ack (normal on an + * interactive connection) and we send it compressed. Otherwise it's + * probably a retransmit, retransmitted ack or window probe. Send it + * uncompressed in case the other side missed the compressed version. + */ + if (ip->ip_len != cs->cs_ip.ip_len && + ntohs(cs->cs_ip.ip_len) == hlen) + break; + + /* (fall through) */ + + case SPECIAL_I: + case SPECIAL_D: + + /* + * actual changes match one of our special case encodings -- send packet + * uncompressed. + */ + goto uncompressed; + + case NEW_S | NEW_A: + if (deltaS == deltaA && + deltaS == ntohs(cs->cs_ip.ip_len) - hlen) { + /* special case for echoed terminal traffic */ + changes = SPECIAL_I; + cp = new_seq; + } + break; + + case NEW_S: + if (deltaS == ntohs(cs->cs_ip.ip_len) - hlen) { + /* special case for data xfer */ + changes = SPECIAL_D; + cp = new_seq; + } + break; + } + + deltaS = ntohs(ip->ip_id) - ntohs(cs->cs_ip.ip_id); + if (deltaS != 1) { + ENCODEZ(deltaS); + changes |= NEW_I; + } + if (th->th_flags & TH_PUSH) + changes |= TCP_PUSH_BIT; + + /* + * Grab the cksum before we overwrite it below. Then update our state with + * this packet's header. + */ + deltaA = ntohs(th->th_sum); + BCOPY(ip, &cs->cs_ip, hlen); + + /* + * We want to use the original packet as our compressed packet. (cp - + * new_seq) is the number of bytes we need for compressed sequence numbers. + * In addition we need one byte for the change mask, one for the connection + * id and two for the tcp checksum. So, (cp - new_seq) + 4 bytes of header + * are needed. hlen is how many bytes of the original packet to toss so + * subtract the two to get the new packet size. + */ + deltaS = cp - new_seq; + cp = (u_char *) ip; + + /* + * Since fastq traffic can jump ahead of the background traffic, we don't + * know what order packets will go on the line. In this case, we always + * send a "new" connection id so the receiver state stays synchronized. + */ #ifdef SL_NOFASTQ - if (comp->last_xmit == cs->cs_id) { - hlen -= deltaS + 3; - cp += hlen; - *cp++ = changes; - } else + if (comp->last_xmit == cs->cs_id) { + hlen -= deltaS + 3; + cp += hlen; + *cp++ = changes; + } else #endif - { - comp->last_xmit = cs->cs_id; - hlen -= deltaS + 4; - cp += hlen; - *cp++ = changes | NEW_C; - *cp++ = cs->cs_id; - } - m->cnt -= hlen; - m->offset += hlen; - *cp++ = deltaA >> 8; - *cp++ = deltaA; - BCOPY(new_seq, cp, deltaS); - INCR(sls_compressed) - return (TYPE_COMPRESSED_TCP); - - /* - * Update connection state cs & send uncompressed packet ('uncompressed' - * means a regular ip/tcp packet but with the 'conversation id' we hope - * to use on future compressed packets in the protocol field). - */ + { + comp->last_xmit = cs->cs_id; + hlen -= deltaS + 4; + cp += hlen; + *cp++ = changes | NEW_C; + *cp++ = cs->cs_id; + } + m->cnt -= hlen; + m->offset += hlen; + *cp++ = deltaA >> 8; + *cp++ = deltaA; + BCOPY(new_seq, cp, deltaS); + INCR(sls_compressed) + return (TYPE_COMPRESSED_TCP); + + /* + * Update connection state cs & send uncompressed packet ('uncompressed' + * means a regular ip/tcp packet but with the 'conversation id' we hope to + * use on future compressed packets in the protocol field). + */ uncompressed: - BCOPY(ip, &cs->cs_ip, hlen); - ip->ip_p = cs->cs_id; - comp->last_xmit = cs->cs_id; - return (TYPE_UNCOMPRESSED_TCP); + BCOPY(ip, &cs->cs_ip, hlen); + ip->ip_p = cs->cs_id; + comp->last_xmit = cs->cs_id; + return (TYPE_UNCOMPRESSED_TCP); } int -sl_uncompress_tcp(bufp, len, type, comp) - u_char **bufp; - int len; - u_int type; - struct slcompress *comp; +sl_uncompress_tcp(u_char ** bufp, + int len, + u_int type, + struct slcompress * comp) { - register u_char *cp; - register u_int hlen, changes; - register struct tcphdr *th; - register struct cstate *cs; - register struct ip *ip; - - switch (type) { - - case TYPE_UNCOMPRESSED_TCP: - ip = (struct ip *) *bufp; - if (ip->ip_p >= MAX_STATES) - goto bad; - cs = &comp->rstate[comp->last_recv = ip->ip_p]; - comp->flags &=~ SLF_TOSS; - ip->ip_p = IPPROTO_TCP; - /* - * Calculate the size of the TCP/IP header and make sure that - * we don't overflow the space we have available for it. - */ - hlen = ip->ip_hl << 2; - if (hlen + sizeof(struct tcphdr) > len) - goto bad; - th = (struct tcphdr *)&((char *)ip)[hlen]; - hlen += THOFFSET(th) << 2; - if (hlen > MAX_HDR) - goto bad; - BCOPY(ip, &cs->cs_ip, hlen); - cs->cs_ip.ip_sum = 0; - cs->cs_hlen = hlen; - INCR(sls_uncompressedin) - return (len); - - default: - goto bad; - - case TYPE_COMPRESSED_TCP: - break; - } - /* We've got a compressed packet. */ - INCR(sls_compressedin) - cp = *bufp; - changes = *cp++; - LogPrintf(LogDEBUG, "compressed: changes = %02x\n", changes); - if (changes & NEW_C) { - /* Make sure the state index is in range, then grab the state. - * If we have a good state index, clear the 'discard' flag. */ - if (*cp >= MAX_STATES || comp->last_recv == 255) - goto bad; - - comp->flags &=~ SLF_TOSS; - comp->last_recv = *cp++; - } else { - /* this packet has an implicit state index. If we've - * had a line error since the last time we got an - * explicit state index, we have to toss the packet. */ - if (comp->flags & SLF_TOSS) { - INCR(sls_tossed) - return (0); - } - } - cs = &comp->rstate[comp->last_recv]; - hlen = cs->cs_ip.ip_hl << 2; - th = (struct tcphdr *)&((u_char *)&cs->cs_ip)[hlen]; - th->th_sum = htons((*cp << 8) | cp[1]); - cp += 2; - if (changes & TCP_PUSH_BIT) - th->th_flags |= TH_PUSH; - else - th->th_flags &=~ TH_PUSH; - - switch (changes & SPECIALS_MASK) { - case SPECIAL_I: - { - register u_int i = ntohs(cs->cs_ip.ip_len) - cs->cs_hlen; - th->th_ack = htonl(ntohl(th->th_ack) + i); - th->th_seq = htonl(ntohl(th->th_seq) + i); - } - break; - - case SPECIAL_D: - th->th_seq = htonl(ntohl(th->th_seq) + ntohs(cs->cs_ip.ip_len) - - cs->cs_hlen); - break; - - default: - if (changes & NEW_U) { - th->th_flags |= TH_URG; - DECODEU(th->th_urp) - } else - th->th_flags &=~ TH_URG; - if (changes & NEW_W) - DECODES(th->th_win) - if (changes & NEW_A) - DECODEL(th->th_ack) - if (changes & NEW_S) { - LogPrintf(LogDEBUG, "NEW_S: %02x, %02x, %02x\n", - *cp, cp[1], cp[2]); - DECODEL(th->th_seq) - } - break; + register u_char *cp; + register u_int hlen, changes; + register struct tcphdr *th; + register struct cstate *cs; + register struct ip *ip; + + switch (type) { + + case TYPE_UNCOMPRESSED_TCP: + ip = (struct ip *) * bufp; + if (ip->ip_p >= MAX_STATES) + goto bad; + cs = &comp->rstate[comp->last_recv = ip->ip_p]; + comp->flags &= ~SLF_TOSS; + ip->ip_p = IPPROTO_TCP; + + /* + * Calculate the size of the TCP/IP header and make sure that we don't + * overflow the space we have available for it. + */ + hlen = ip->ip_hl << 2; + if (hlen + sizeof(struct tcphdr) > len) + goto bad; + th = (struct tcphdr *) & ((char *) ip)[hlen]; + hlen += THOFFSET(th) << 2; + if (hlen > MAX_HDR) + goto bad; + BCOPY(ip, &cs->cs_ip, hlen); + cs->cs_ip.ip_sum = 0; + cs->cs_hlen = hlen; + INCR(sls_uncompressedin) + return (len); + + default: + goto bad; + + case TYPE_COMPRESSED_TCP: + break; + } + /* We've got a compressed packet. */ + INCR(sls_compressedin) + cp = *bufp; + changes = *cp++; + LogPrintf(LogDEBUG, "compressed: changes = %02x\n", changes); + if (changes & NEW_C) { + + /* + * Make sure the state index is in range, then grab the state. If we have + * a good state index, clear the 'discard' flag. + */ + if (*cp >= MAX_STATES || comp->last_recv == 255) + goto bad; + + comp->flags &= ~SLF_TOSS; + comp->last_recv = *cp++; + } else { + + /* + * this packet has an implicit state index. If we've had a line error + * since the last time we got an explicit state index, we have to toss + * the packet. + */ + if (comp->flags & SLF_TOSS) { + INCR(sls_tossed) + return (0); + } + } + cs = &comp->rstate[comp->last_recv]; + hlen = cs->cs_ip.ip_hl << 2; + th = (struct tcphdr *) & ((u_char *) & cs->cs_ip)[hlen]; + th->th_sum = htons((*cp << 8) | cp[1]); + cp += 2; + if (changes & TCP_PUSH_BIT) + th->th_flags |= TH_PUSH; + else + th->th_flags &= ~TH_PUSH; + + switch (changes & SPECIALS_MASK) { + case SPECIAL_I: + { + register u_int i = ntohs(cs->cs_ip.ip_len) - cs->cs_hlen; + + th->th_ack = htonl(ntohl(th->th_ack) + i); + th->th_seq = htonl(ntohl(th->th_seq) + i); + } + break; + + case SPECIAL_D: + th->th_seq = htonl(ntohl(th->th_seq) + ntohs(cs->cs_ip.ip_len) + - cs->cs_hlen); + break; + + default: + if (changes & NEW_U) { + th->th_flags |= TH_URG; + DECODEU(th->th_urp) + } else + th->th_flags &= ~TH_URG; + if (changes & NEW_W) + DECODES(th->th_win) + if (changes & NEW_A) + DECODEL(th->th_ack) + if (changes & NEW_S) { + LogPrintf(LogDEBUG, "NEW_S: %02x, %02x, %02x\n", + *cp, cp[1], cp[2]); + DECODEL(th->th_seq) } - if (changes & NEW_I) { - DECODES(cs->cs_ip.ip_id) - } else - cs->cs_ip.ip_id = htons(ntohs(cs->cs_ip.ip_id) + 1); - - LogPrintf(LogDEBUG, "Uncompress: id = %04x, seq = %08x\n", - cs->cs_ip.ip_id, ntohl(th->th_seq)); - - /* - * At this point, cp points to the first byte of data in the - * packet. If we're not aligned on a 4-byte boundary, copy the - * data down so the ip & tcp headers will be aligned. Then back up - * cp by the tcp/ip header length to make room for the reconstructed - * header (we assume the packet we were handed has enough space to - * prepend 128 bytes of header). Adjust the length to account for - * the new header & fill in the IP total length. - */ - len -= (cp - *bufp); - if (len < 0) - /* we must have dropped some characters (crc should detect - * this but the old slip framing won't) */ - goto bad; + break; + } + if (changes & NEW_I) { + DECODES(cs->cs_ip.ip_id) + } else + cs->cs_ip.ip_id = htons(ntohs(cs->cs_ip.ip_id) + 1); + + LogPrintf(LogDEBUG, "Uncompress: id = %04x, seq = %08x\n", + cs->cs_ip.ip_id, ntohl(th->th_seq)); + + /* + * At this point, cp points to the first byte of data in the packet. If + * we're not aligned on a 4-byte boundary, copy the data down so the ip & + * tcp headers will be aligned. Then back up cp by the tcp/ip header + * length to make room for the reconstructed header (we assume the packet + * we were handed has enough space to prepend 128 bytes of header). Adjust + * the length to account for the new header & fill in the IP total length. + */ + len -= (cp - *bufp); + if (len < 0) + + /* + * we must have dropped some characters (crc should detect this but the + * old slip framing won't) + */ + goto bad; #ifdef notdef - if ((int)cp & 3) { - if (len > 0) - (void) ovbcopy(cp, (caddr_t)((int)cp &~ 3), len); - cp = (u_char *)((int)cp &~ 3); - } + if ((int) cp & 3) { + if (len > 0) + (void) ovbcopy(cp, (caddr_t) ((int) cp & ~3), len); + cp = (u_char *) ((int) cp & ~3); + } #endif - cp -= cs->cs_hlen; - len += cs->cs_hlen; - cs->cs_ip.ip_len = htons(len); - BCOPY(&cs->cs_ip, cp, cs->cs_hlen); - *bufp = cp; - - /* recompute the ip header checksum */ - { - register u_short *bp = (u_short *)cp; - for (changes = 0; hlen > 0; hlen -= 2) - changes += *bp++; - changes = (changes & 0xffff) + (changes >> 16); - changes = (changes & 0xffff) + (changes >> 16); - ((struct ip *)cp)->ip_sum = ~ changes; - } - return (len); + cp -= cs->cs_hlen; + len += cs->cs_hlen; + cs->cs_ip.ip_len = htons(len); + BCOPY(&cs->cs_ip, cp, cs->cs_hlen); + *bufp = cp; + + /* recompute the ip header checksum */ + { + register u_short *bp = (u_short *) cp; + + for (changes = 0; hlen > 0; hlen -= 2) + changes += *bp++; + changes = (changes & 0xffff) + (changes >> 16); + changes = (changes & 0xffff) + (changes >> 16); + ((struct ip *) cp)->ip_sum = ~changes; + } + return (len); bad: - comp->flags |= SLF_TOSS; - INCR(sls_errorin) - return (0); + comp->flags |= SLF_TOSS; + INCR(sls_errorin) + return (0); } int @@ -569,12 +572,12 @@ ReportCompress() return 1; fprintf(VarTerm, "Out: %d (compress) / %d (total)", - slstat.sls_compressed, slstat.sls_packets); + slstat.sls_compressed, slstat.sls_packets); fprintf(VarTerm, " %d (miss) / %d (search)\n", - slstat.sls_misses, slstat.sls_searches); + slstat.sls_misses, slstat.sls_searches); fprintf(VarTerm, "In: %d (compress), %d (uncompress)", - slstat.sls_compressedin, slstat.sls_uncompressedin); + slstat.sls_compressedin, slstat.sls_uncompressedin); fprintf(VarTerm, " %d (error), %d (tossed)\n", - slstat.sls_errorin, slstat.sls_tossed); + slstat.sls_errorin, slstat.sls_tossed); return 0; } diff --git a/usr.sbin/ppp/slcompress.h b/usr.sbin/ppp/slcompress.h index 35b9199..1506d08 100644 --- a/usr.sbin/ppp/slcompress.h +++ b/usr.sbin/ppp/slcompress.h @@ -1,7 +1,7 @@ /* * Definitions for tcp compression routines. * - * $Header: /home/ncvs/src/usr.sbin/ppp/slcompress.h,v 1.5 1997/02/22 16:10:55 peter Exp $ + * $Header: /home/ncvs/src/usr.sbin/ppp/slcompress.h,v 1.6 1997/06/09 03:27:38 brian Exp $ * * Copyright (c) 1989 Regents of the University of California. * All rights reserved. @@ -18,7 +18,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: slcompress.h,v 1.5 1997/02/22 16:10:55 peter Exp $ + * $Id: slcompress.h,v 1.6 1997/06/09 03:27:38 brian Exp $ * * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989: * - Initial distribution. @@ -77,7 +77,7 @@ #define TYPE_ERROR 0x00 /* Bits in first octet of compressed packet */ -#define NEW_C 0x40 /* flag bits for what changed in a packet */ +#define NEW_C 0x40 /* flag bits for what changed in a packet */ #define NEW_I 0x20 #define NEW_S 0x08 #define NEW_A 0x04 @@ -85,7 +85,7 @@ #define NEW_U 0x01 /* reserved, special-case values of above */ -#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */ +#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */ #define SPECIAL_D (NEW_S|NEW_A|NEW_W|NEW_U) /* unidirectional data */ #define SPECIALS_MASK (NEW_S|NEW_A|NEW_W|NEW_U) @@ -98,15 +98,16 @@ * the transmit & receive ends of the line use to locate saved header. */ struct cstate { - struct cstate *cs_next; /* next most recently used cstate (xmit only) */ - u_short cs_hlen; /* size of hdr (receive only) */ - u_char cs_id; /* connection # associated with this state */ - u_char cs_filler; - union { - char csu_hdr[MAX_HDR]; - struct ip csu_ip; /* ip/tcp hdr from most recent packet */ - } slcs_u; + struct cstate *cs_next; /* next most recently used cstate (xmit only) */ + u_short cs_hlen; /* size of hdr (receive only) */ + u_char cs_id; /* connection # associated with this state */ + u_char cs_filler; + union { + char csu_hdr[MAX_HDR]; + struct ip csu_ip; /* ip/tcp hdr from most recent packet */ + } slcs_u; }; + #define cs_ip slcs_u.csu_ip #define cs_hdr slcs_u.csu_hdr @@ -115,12 +116,12 @@ struct cstate { * per line). */ struct slcompress { - struct cstate *last_cs; /* most recently used tstate */ - u_char last_recv; /* last rcvd conn. id */ - u_char last_xmit; /* last sent conn. id */ - u_short flags; - struct cstate tstate[MAX_STATES]; /* xmit connection states */ - struct cstate rstate[MAX_STATES]; /* receive connection states */ + struct cstate *last_cs; /* most recently used tstate */ + u_char last_recv; /* last rcvd conn. id */ + u_char last_xmit; /* last sent conn. id */ + u_short flags; + struct cstate tstate[MAX_STATES]; /* xmit connection states */ + struct cstate rstate[MAX_STATES]; /* receive connection states */ }; struct slstat { @@ -128,8 +129,8 @@ struct slstat { int sls_compressed; /* outbound compressed packets */ int sls_searches; /* searches for connection state */ int sls_misses; /* times couldn't find conn. state */ - int sls_uncompressedin; /* inbound uncompressed packets */ - int sls_compressedin; /* inbound compressed packets */ + int sls_uncompressedin; /* inbound uncompressed packets */ + int sls_compressedin; /* inbound compressed packets */ int sls_errorin; /* inbound unknown type packets */ int sls_tossed; /* inbound packets tossed because of error */ }; @@ -138,6 +139,7 @@ struct slstat { #define SLF_TOSS 1 /* tossing rcvd frames because of input err */ extern void sl_compress_init(struct slcompress *); -extern u_char sl_compress_tcp __P((struct mbuf *, struct ip *, - struct slcompress *, int compress_cid_flag)); -extern int sl_uncompress_tcp(u_char **, int, u_int, struct slcompress *); +extern u_char sl_compress_tcp +__P((struct mbuf *, struct ip *, + struct slcompress *, int compress_cid_flag)); + extern int sl_uncompress_tcp(u_char **, int, u_int, struct slcompress *); diff --git a/usr.sbin/ppp/systems.c b/usr.sbin/ppp/systems.c index df75cc1..3693cda 100644 --- a/usr.sbin/ppp/systems.c +++ b/usr.sbin/ppp/systems.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: systems.c,v 1.12 1997/06/09 03:27:38 brian Exp $ + * $Id: systems.c,v 1.13 1997/06/25 19:30:05 brian Exp $ * * TODO: */ @@ -28,6 +28,7 @@ #include "pathnames.h" #include "vars.h" #include "server.h" +#include "command.h" extern void DecodeCommand(); @@ -38,7 +39,7 @@ static int usermode; int OrigUid() { - return uid; + return uid; } void @@ -88,8 +89,7 @@ SetPppId() } FILE * -OpenSecret(file) -char *file; +OpenSecret(char *file) { FILE *fp; char *cp; @@ -110,28 +110,25 @@ char *file; if (fp == NULL) { LogPrintf(LogWARN, "OpenSecret: Can't open %s.\n", line); SetPppId(); - return(NULL); + return (NULL); } - return(fp); + return (fp); } void -CloseSecret(fp) -FILE *fp; +CloseSecret(FILE * fp) { fclose(fp); SetPppId(); } int -SelectSystem(name, file) -char *name; -char *file; +SelectSystem(char *name, char *file) { FILE *fp; char *cp, *wp; int n; - u_char olauth; + u_char olauth; char line[200]; char filename[200]; int linenum; @@ -144,14 +141,14 @@ char *file; fp = fopen(filename, "r"); } if (fp == NULL) { - SetPppId(); /* fix from pdp@ark.jr3uom.iijnet.or.jp */ + SetPppId(); /* fix from pdp@ark.jr3uom.iijnet.or.jp */ snprintf(filename, sizeof filename, "%s/%s", _PATH_PPP, file); fp = fopen(filename, "r"); } if (fp == NULL) { LogPrintf(LogDEBUG, "SelectSystem: Can't open %s.\n", filename); SetPppId(); - return(-1); + return (-1); } LogPrintf(LogDEBUG, "SelectSystem: Checking %s (%s).\n", name, filename); @@ -160,7 +157,7 @@ char *file; linenum++; cp = line; switch (*cp) { - case '#': /* comment */ + case '#': /* comment */ break; case ' ': case '\t': @@ -169,8 +166,8 @@ char *file; wp = strpbrk(cp, ":\n"); if (wp == NULL) { LogPrintf(LogWARN, "Bad rule in %s (line %d) - missing colon.\n", - filename, linenum); - ServerClose(); + filename, linenum); + ServerClose(); exit(1); } *wp = '\0'; @@ -182,10 +179,10 @@ char *file; cp += n; LogPrintf(LogCOMMAND, "%s: %s", name, cp); SetPppId(); - olauth = VarLocalAuth; + olauth = VarLocalAuth; VarLocalAuth = LOCAL_AUTH; DecodeCommand(cp, strlen(cp), 0); - VarLocalAuth = olauth; + VarLocalAuth = olauth; SetUserId(); } else if (*cp == '#') { continue; @@ -194,7 +191,7 @@ char *file; } fclose(fp); SetPppId(); - return(0); + return (0); } break; } @@ -205,10 +202,7 @@ char *file; } int -LoadCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +LoadCommand(struct cmdtab const * list, int argc, char **argv) { char *name; @@ -221,15 +215,11 @@ char **argv; LogPrintf(LogWARN, "%s: not found.\n", name); return -1; } - return 0; } int -SaveCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +SaveCommand(struct cmdtab const * list, int argc, char **argv) { LogPrintf(LogWARN, "save command is not implemented (yet).\n"); return 1; diff --git a/usr.sbin/ppp/systems.h b/usr.sbin/ppp/systems.h index ff85241..d36820b 100644 --- a/usr.sbin/ppp/systems.h +++ b/usr.sbin/ppp/systems.h @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: systems.h,v 1.4 1997/05/26 00:44:09 brian Exp $ + * $Id: systems.h,v 1.5 1997/06/09 03:27:38 brian Exp $ * */ @@ -25,5 +25,6 @@ #define _SYSTEMS_H_ extern int OrigUid(void); extern void GetUid(void); -extern int SelectSystem(char *, char*); +extern int SelectSystem(char *, char *); + #endif diff --git a/usr.sbin/ppp/timeout.h b/usr.sbin/ppp/timeout.h index fec8f86..2fcec0b 100644 --- a/usr.sbin/ppp/timeout.h +++ b/usr.sbin/ppp/timeout.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: timeout.h,v 1.9 1997/02/22 16:10:58 peter Exp $ + * $Id: timeout.h,v 1.10 1997/06/09 03:27:39 brian Exp $ * * TODO: */ @@ -23,15 +23,15 @@ #ifndef _TIMEOUT_H_ #define _TIMEOUT_H_ -#define TICKUNIT 100000 /* Unit in usec */ +#define TICKUNIT 100000 /* Unit in usec */ #define SECTICKS (1000000/TICKUNIT) struct pppTimer { - int state; - u_long rest; /* Ticks to expire */ - u_long load; /* Initial load value */ - void (*func)(); /* Function called when timer is expired */ - void *arg; /* Argument passed to timeout function */ + int state; + u_long rest; /* Ticks to expire */ + u_long load; /* Initial load value */ + void (*func) (); /* Function called when timer is expired */ + void *arg; /* Argument passed to timeout function */ struct pppTimer *next; /* Link to next timer */ struct pppTimer *enext; /* Link to next expired timer */ }; @@ -50,4 +50,5 @@ extern void TermTimerService(void); extern void StartIdleTimer(void); extern void UpdateIdleTimer(void); extern void ShowTimers(); -#endif /* _TIMEOUT_H_ */ + +#endif /* _TIMEOUT_H_ */ diff --git a/usr.sbin/ppp/timer.c b/usr.sbin/ppp/timer.c index 00eaa49..4790035 100644 --- a/usr.sbin/ppp/timer.c +++ b/usr.sbin/ppp/timer.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: timer.c,v 1.16 1997/05/10 01:22:19 brian Exp $ + * $Id: timer.c,v 1.17 1997/06/09 03:27:40 brian Exp $ * * TODO: */ @@ -30,13 +30,14 @@ #endif #include "sig.h" -void StopTimerNoBlock( struct pppTimer *); +void StopTimerNoBlock(struct pppTimer *); void -StopTimer( struct pppTimer *tp ) +StopTimer(struct pppTimer * tp) { #ifdef SIGALRM - int omask; + int omask; + omask = sigblock(sigmask(SIGALRM)); #endif StopTimerNoBlock(tp); @@ -46,14 +47,14 @@ StopTimer( struct pppTimer *tp ) } void -StartTimer(tp) -struct pppTimer *tp; +StartTimer(struct pppTimer * tp) { struct pppTimer *t, *pt; u_long ticks = 0; #ifdef SIGALRM - int omask; + int omask; + omask = sigblock(sigmask(SIGALRM)); #endif @@ -68,7 +69,7 @@ struct pppTimer *tp; pt = NULL; for (t = TimerList; t; t = t->next) { LogPrintf(LogDEBUG, "StartTimer: %x(%d): ticks: %d, rest: %d\n", - t, t->state, ticks, t->rest); + t, t->state, ticks, t->rest); if (ticks + t->rest >= tp->load) break; ticks += t->rest; @@ -78,7 +79,7 @@ struct pppTimer *tp; tp->state = TIMER_RUNNING; tp->rest = tp->load - ticks; LogPrintf(LogDEBUG, "StartTimer: Inserting %x before %x, rest = %d\n", - tp, t, tp->rest); + tp, t, tp->rest); /* Insert given *tp just before *t */ tp->next = t; if (pt) { @@ -96,35 +97,32 @@ struct pppTimer *tp; } void -StopTimerNoBlock(tp) -struct pppTimer *tp; +StopTimerNoBlock(struct pppTimer * tp) { struct pppTimer *t, *pt; /* - * A Running Timer should be removing TimerList, - * But STOPPED/EXPIRED is already removing TimerList. - * So just marked as TIMER_STOPPED. - * Do not change tp->enext!! (Might be Called by expired proc) + * A Running Timer should be removing TimerList, But STOPPED/EXPIRED is + * already removing TimerList. So just marked as TIMER_STOPPED. Do not + * change tp->enext!! (Might be Called by expired proc) */ LogPrintf(LogDEBUG, "StopTimer: %x, next = %x state=%x\n", - tp, tp->next, tp->state); + tp, tp->next, tp->state); if (tp->state != TIMER_RUNNING) { - tp->next = NULL; - tp->state = TIMER_STOPPED; + tp->next = NULL; + tp->state = TIMER_STOPPED; return; } - pt = NULL; - for (t = TimerList; t != tp && t !=NULL ; t = t->next) + for (t = TimerList; t != tp && t != NULL; t = t->next) pt = t; if (t) { if (pt) { pt->next = t->next; } else { TimerList = t->next; - if ( TimerList == NULL ) /* Last one ? */ - TermTimerService(); /* Terminate Timer Service */ + if (TimerList == NULL) /* Last one ? */ + TermTimerService(); /* Terminate Timer Service */ } if (t->next) t->next->rest += tp->rest; @@ -146,6 +144,7 @@ TimerService() if (tp) { tp->rest--; if (tp->rest == 0) { + /* * Multiple timers may expires at once. Create list of expired timers. */ @@ -160,10 +159,11 @@ TimerService() } while (tp && (tp->rest == 0)); TimerList = tp; - if ( TimerList == NULL ) /* No timers ? */ - TermTimerService(); /* Terminate Timer Service */ + if (TimerList == NULL) /* No timers ? */ + TermTimerService(); /* Terminate Timer Service */ LogPrintf(LogDEBUG, "TimerService: next is %x(%d)\n", - TimerList, TimerList? TimerList->rest : 0); + TimerList, TimerList ? TimerList->rest : 0); + /* * Process all expired timers. */ @@ -172,13 +172,13 @@ TimerService() StopTimer(exp); #endif if (exp->func) - (*exp->func)(exp->arg); + (*exp->func) (exp->arg); + /* - * Just Removing each item from expired list - * And exp->enext will be intialized at next expire - * in this funtion. - */ - exp = exp->enext; + * Just Removing each item from expired list And exp->enext will be + * intialized at next expire in this funtion. + */ + exp = exp->enext; } } } @@ -192,83 +192,88 @@ ShowTimers() LogPrintf(LogDEBUG, "---- Begin of Timer Service List---\n"); for (pt = TimerList; pt; pt = pt->next) LogPrintf(LogDEBUG, "%x: load = %d, rest = %d, state =%x\n", - pt, pt->load, pt->rest, pt->state); + pt, pt->load, pt->rest, pt->state); LogPrintf(LogDEBUG, "---- End of Timer Service List ---\n"); } #ifdef SIGALRM u_int -sleep( u_int sec ) +sleep(u_int sec) { - struct timeval to,st,et; + struct timeval to, st, et; long sld, nwd, std; - gettimeofday( &st, NULL ); - to.tv_sec = sec; + gettimeofday(&st, NULL); + to.tv_sec = sec; to.tv_usec = 0; std = st.tv_sec * 1000000 + st.tv_usec; for (;;) { - if ( select ( 0, NULL, NULL, NULL, &to) == 0 || - errno != EINTR ) { - break; - } else { - gettimeofday( &et, NULL ); - sld = to.tv_sec * 1000000 + to.tv_sec; - nwd = et.tv_sec * 1000000 + et.tv_usec - std; - if ( sld > nwd ) - sld -= nwd; - else - sld = 1; /* Avoid both tv_sec/usec is 0 */ - - /* Calculate timeout value for select */ - to.tv_sec = sld / 1000000; - to.tv_usec = sld % 1000000; + if (select(0, NULL, NULL, NULL, &to) == 0 || + errno != EINTR) { + break; + } else { + gettimeofday(&et, NULL); + sld = to.tv_sec * 1000000 + to.tv_sec; + nwd = et.tv_sec * 1000000 + et.tv_usec - std; + if (sld > nwd) + sld -= nwd; + else + sld = 1; /* Avoid both tv_sec/usec is 0 */ + + /* Calculate timeout value for select */ + to.tv_sec = sld / 1000000; + to.tv_usec = sld % 1000000; } } return (0L); } -void usleep( u_int usec) +void +usleep(u_int usec) { - struct timeval to,st,et; + struct timeval to, st, et; long sld, nwd, std; - gettimeofday( &st, NULL ); - to.tv_sec = 0; + gettimeofday(&st, NULL); + to.tv_sec = 0; to.tv_usec = usec; std = st.tv_sec * 1000000 + st.tv_usec; for (;;) { - if ( select ( 0, NULL, NULL, NULL, &to) == 0 || - errno != EINTR ) { - break; - } else { - gettimeofday( &et, NULL ); - sld = to.tv_sec * 1000000 + to.tv_sec; - nwd = et.tv_sec * 1000000 + et.tv_usec - std; - if ( sld > nwd ) - sld -= nwd; - else - sld = 1; /* Avoid both tv_sec/usec is 0 */ - - /* Calculate timeout value for select */ - to.tv_sec = sld / 1000000; - to.tv_usec = sld % 1000000; + if (select(0, NULL, NULL, NULL, &to) == 0 || + errno != EINTR) { + break; + } else { + gettimeofday(&et, NULL); + sld = to.tv_sec * 1000000 + to.tv_sec; + nwd = et.tv_sec * 1000000 + et.tv_usec - std; + if (sld > nwd) + sld -= nwd; + else + sld = 1; /* Avoid both tv_sec/usec is 0 */ + + /* Calculate timeout value for select */ + to.tv_sec = sld / 1000000; + to.tv_usec = sld % 1000000; } } } -void InitTimerService( void ) { +void +InitTimerService(void) +{ struct itimerval itimer; - pending_signal(SIGALRM, (void (*)(int))TimerService); + pending_signal(SIGALRM, (void (*) (int)) TimerService); itimer.it_interval.tv_sec = itimer.it_value.tv_sec = 0; itimer.it_interval.tv_usec = itimer.it_value.tv_usec = TICKUNIT; if (setitimer(ITIMER_REAL, &itimer, NULL) == -1) LogPrintf(LogERROR, "Unable to set itimer.\n"); } -void TermTimerService( void ) { +void +TermTimerService(void) +{ struct itimerval itimer; itimer.it_interval.tv_usec = itimer.it_interval.tv_sec = 0; @@ -277,4 +282,5 @@ void TermTimerService( void ) { LogPrintf(LogERROR, "Unable to set itimer.\n"); pending_signal(SIGALRM, SIG_IGN); } + #endif diff --git a/usr.sbin/ppp/vars.c b/usr.sbin/ppp/vars.c index 42b4ca6..ed288094 100644 --- a/usr.sbin/ppp/vars.c +++ b/usr.sbin/ppp/vars.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: vars.c,v 1.23 1997/08/21 16:21:38 brian Exp $ + * $Id: vars.c,v 1.24 1997/08/21 17:20:00 brian Exp $ * */ #include "fsm.h" @@ -29,31 +29,31 @@ #include "auth.h" #include "defs.h" -char VarVersion[] = "PPP Version 1.02"; -char VarLocalVersion[] = "$Date: 1997/08/21 16:21:38 $"; +char VarVersion[] = "PPP Version 1.1"; +char VarLocalVersion[] = "$Date: 1997/08/21 17:20:00 $"; /* * Order of conf option is important. See vars.h. */ struct confdesc pppConfs[] = { - { "vjcomp", CONF_ENABLE, CONF_ACCEPT }, - { "lqr", CONF_ENABLE, CONF_ACCEPT }, - { "chap", CONF_DISABLE, CONF_ACCEPT }, - { "pap", CONF_DISABLE, CONF_ACCEPT }, - { "acfcomp", CONF_ENABLE, CONF_ACCEPT }, - { "protocomp", CONF_ENABLE, CONF_ACCEPT }, - { "pred1", CONF_ENABLE, CONF_ACCEPT }, - { "proxy", CONF_DISABLE, CONF_DENY }, - { "msext", CONF_DISABLE, CONF_ACCEPT }, - { "passwdauth",CONF_DISABLE, CONF_DENY }, - { NULL }, + {"vjcomp", CONF_ENABLE, CONF_ACCEPT}, + {"lqr", CONF_ENABLE, CONF_ACCEPT}, + {"chap", CONF_DISABLE, CONF_ACCEPT}, + {"pap", CONF_DISABLE, CONF_ACCEPT}, + {"acfcomp", CONF_ENABLE, CONF_ACCEPT}, + {"protocomp", CONF_ENABLE, CONF_ACCEPT}, + {"pred1", CONF_ENABLE, CONF_ACCEPT}, + {"proxy", CONF_DISABLE, CONF_DENY}, + {"msext", CONF_DISABLE, CONF_ACCEPT}, + {"passwdauth", CONF_DISABLE, CONF_DENY}, + {NULL}, }; struct pppvars pppVars = { DEF_MRU, DEF_MTU, 0, MODEM_SPEED, CS8, MODEM_CTSRTS, 180, 30, 3, RECONNECT_TIMER, RECONNECT_TRIES, REDIAL_PERIOD, NEXT_REDIAL_PERIOD, 1, 1, MODEM_DEV, BASE_MODEM_DEV, - OPEN_ACTIVE, LOCAL_NO_AUTH,0 + OPEN_ACTIVE, LOCAL_NO_AUTH, 0 }; int @@ -69,14 +69,14 @@ DisplayCommand() fprintf(VarTerm, "----------------------------------------\n"); for (vp = pppConfs; vp->name; vp++) fprintf(VarTerm, "%-10s\t%s\t\t%s\n", vp->name, - (vp->myside == CONF_ENABLE)? "enable" : "disable", - (vp->hisside == CONF_ACCEPT)? "accept" : "deny"); + (vp->myside == CONF_ENABLE) ? "enable" : "disable", + (vp->hisside == CONF_ACCEPT) ? "accept" : "deny"); return 0; } static int -ConfigCommand(struct cmdtab *list, int argc, char **argv, int mine, int val) +ConfigCommand(struct cmdtab * list, int argc, char **argv, int mine, int val) { struct confdesc *vp; int err; @@ -88,15 +88,14 @@ ConfigCommand(struct cmdtab *list, int argc, char **argv, int mine, int val) do { for (vp = pppConfs; vp->name; vp++) if (strcasecmp(vp->name, *argv) == 0) { - if (mine) + if (mine) vp->myside = val; - else + else vp->hisside = val; - break; + break; } - if (!vp->name) { - LogPrintf(LogWARN, "Config: %s: No such key word\n", *argv ); + LogPrintf(LogWARN, "Config: %s: No such key word\n", *argv); err++; } argc--; @@ -107,53 +106,50 @@ ConfigCommand(struct cmdtab *list, int argc, char **argv, int mine, int val) } int -EnableCommand(struct cmdtab *list, int argc, char **argv) +EnableCommand(struct cmdtab * list, int argc, char **argv) { return ConfigCommand(list, argc, argv, 1, CONF_ENABLE); } int -DisableCommand(struct cmdtab *list, int argc, char **argv) +DisableCommand(struct cmdtab * list, int argc, char **argv) { return ConfigCommand(list, argc, argv, 1, CONF_DISABLE); } int -AcceptCommand(struct cmdtab *list, int argc, char **argv) +AcceptCommand(struct cmdtab * list, int argc, char **argv) { return ConfigCommand(list, argc, argv, 0, CONF_ACCEPT); } int -DenyCommand(struct cmdtab *list, int argc, char **argv) +DenyCommand(struct cmdtab * list, int argc, char **argv) { return ConfigCommand(list, argc, argv, 0, CONF_DENY); } int -LocalAuthCommand(list, argc, argv) -struct cmdtab *list; -int argc; -char **argv; +LocalAuthCommand(struct cmdtab * list, int argc, char **argv) { if (argc != 1) return -1; - switch ( LocalAuthValidate( SECRETFILE, VarShortHost, *argv ) ) { - case INVALID: - pppVars.lauth = LOCAL_NO_AUTH; - break; - case VALID: - pppVars.lauth = LOCAL_AUTH; - break; - case NOT_FOUND: - pppVars.lauth = LOCAL_AUTH; - LogPrintf(LogWARN, "WARING: No Entry for this system\n"); - break; - default: - pppVars.lauth = LOCAL_NO_AUTH; - LogPrintf(LogERROR, "LocalAuthCommand: Ooops?\n"); - return 1; + switch (LocalAuthValidate(SECRETFILE, VarShortHost, *argv)) { + case INVALID: + pppVars.lauth = LOCAL_NO_AUTH; + break; + case VALID: + pppVars.lauth = LOCAL_AUTH; + break; + case NOT_FOUND: + pppVars.lauth = LOCAL_AUTH; + LogPrintf(LogWARN, "WARING: No Entry for this system\n"); + break; + default: + pppVars.lauth = LOCAL_NO_AUTH; + LogPrintf(LogERROR, "LocalAuthCommand: Ooops?\n"); + return 1; } return 0; } diff --git a/usr.sbin/ppp/vars.h b/usr.sbin/ppp/vars.h index 4583a2a..687e92a 100644 --- a/usr.sbin/ppp/vars.h +++ b/usr.sbin/ppp/vars.h @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: vars.h,v 1.23 1997/08/20 23:47:53 brian Exp $ + * $Id: vars.h,v 1.24 1997/08/21 16:21:39 brian Exp $ * * TODO: */ @@ -27,7 +27,7 @@ struct confdesc { char *name; - int myside, hisside; + int myside, hisside; }; #define CONF_DISABLE 0 @@ -51,44 +51,44 @@ struct confdesc { #define Enabled(x) (pppConfs[x].myside & CONF_ENABLE) #define Acceptable(x) (pppConfs[x].hisside & CONF_ACCEPT) -extern struct confdesc pppConfs[MAXCONFS+1]; +extern struct confdesc pppConfs[MAXCONFS + 1]; struct pppvars { u_long var_mru; /* Initial MRU value */ u_long pref_mtu; /* Preferred MTU value */ - int var_accmap; /* Initial ACCMAP value */ - int modem_speed; /* Current modem speed */ - int modem_parity; /* Parity setting */ - int modem_ctsrts; /* Use CTS/RTS on modem port? (boolean) */ - int idle_timeout; /* Idle timeout value */ - int lqr_timeout; /* LQR timeout value */ - int retry_timeout; /* Retry timeout value */ - int reconnect_timer; /* Timeout before reconnect on carrier loss */ - int reconnect_tries; /* Attempt reconnect on carrier loss */ - int redial_timeout; /* Redial timeout value */ - int redial_next_timeout; /* Redial next timeout value */ - int dial_tries; /* Dial attempts before giving up, 0 == inf */ - int loopback; /* Turn around packets addressed to me */ - char modem_dev[40]; /* Name of device / host:port */ - char *base_modem_dev; /* Pointer to base of modem_dev */ - int open_mode; /* LCP open mode */ + int var_accmap; /* Initial ACCMAP value */ + int modem_speed; /* Current modem speed */ + int modem_parity; /* Parity setting */ + int modem_ctsrts; /* Use CTS/RTS on modem port? (boolean) */ + int idle_timeout; /* Idle timeout value */ + int lqr_timeout; /* LQR timeout value */ + int retry_timeout; /* Retry timeout value */ + int reconnect_timer; /* Timeout before reconnect on carrier loss */ + int reconnect_tries; /* Attempt reconnect on carrier loss */ + int redial_timeout; /* Redial timeout value */ + int redial_next_timeout; /* Redial next timeout value */ + int dial_tries; /* Dial attempts before giving up, 0 == inf */ + int loopback; /* Turn around packets addressed to me */ + char modem_dev[40]; /* Name of device / host:port */ + char *base_modem_dev; /* Pointer to base of modem_dev */ + int open_mode; /* LCP open mode */ #define LOCAL_AUTH 0x01 #define LOCAL_NO_AUTH 0x02 u_char lauth; /* Local Authorized status */ FILE *termfp; /* The terminal */ #define DIALUP_REQ 0x01 #define DIALUP_DONE 0x02 - char dial_script[200]; /* Dial script */ - char login_script[200]; /* Login script */ - char auth_key[50]; /* PAP/CHAP key */ - char auth_name[50]; /* PAP/CHAP system name */ - char phone_numbers[200]; /* Telephone Numbers */ - char phone_copy[200]; /* copy for strsep() */ - char *next_phone; /* Next phone from the list */ - char *alt_phone; /* Next phone from the list */ - char shostname[MAXHOSTNAMELEN];/* Local short Host Name */ - char hangup_script[200]; /* Hangup script before modem is closed */ - struct aliasHandlers handler; /* Alias function pointers */ + char dial_script[200]; /* Dial script */ + char login_script[200]; /* Login script */ + char auth_key[50]; /* PAP/CHAP key */ + char auth_name[50]; /* PAP/CHAP system name */ + char phone_numbers[200]; /* Telephone Numbers */ + char phone_copy[200]; /* copy for strsep() */ + char *next_phone; /* Next phone from the list */ + char *alt_phone; /* Next phone from the list */ + char shostname[MAXHOSTNAMELEN]; /* Local short Host Name */ + char hangup_script[200]; /* Hangup script before modem is closed */ + struct aliasHandlers handler; /* Alias function pointers */ }; #define VarAccmap pppVars.var_accmap @@ -123,17 +123,17 @@ struct pppvars { #define VarTerm pppVars.termfp #define VarAliasHandlers pppVars.handler -#define VarGetNextFragmentPtr (*pppVars.handler.GetNextFragmentPtr) -#define VarGetNextFragmentPtr (*pppVars.handler.GetNextFragmentPtr) -#define VarInitPacketAlias (*pppVars.handler.InitPacketAlias) +#define VarPacketAliasGetFragment (*pppVars.handler.PacketAliasGetFragment) +#define VarPacketAliasGetFragment (*pppVars.handler.PacketAliasGetFragment) +#define VarPacketAliasInit (*pppVars.handler.PacketAliasInit) #define VarPacketAliasIn (*pppVars.handler.PacketAliasIn) #define VarPacketAliasOut (*pppVars.handler.PacketAliasOut) #define VarPacketAliasRedirectAddr (*pppVars.handler.PacketAliasRedirectAddr) #define VarPacketAliasRedirectPort (*pppVars.handler.PacketAliasRedirectPort) -#define VarSaveFragmentPtr (*pppVars.handler.SaveFragmentPtr) -#define VarSetPacketAliasAddress (*pppVars.handler.SetPacketAliasAddress) -#define VarSetPacketAliasMode (*pppVars.handler.SetPacketAliasMode) -#define VarFragmentAliasIn (*pppVars.handler.FragmentAliasIn) +#define VarPacketAliasSaveFragment (*pppVars.handler.PacketAliasSaveFragment) +#define VarPacketAliasSetAddress (*pppVars.handler.PacketAliasSetAddress) +#define VarPacketAliasSetMode (*pppVars.handler.PacketAliasSetMode) +#define VarPacketAliasFragmentIn (*pppVars.handler.PacketAliasFragmentIn) #define DEV_IS_SYNC (VarSpeed == 0) @@ -156,6 +156,7 @@ int ipConnectSecs, ipIdleSecs; while(0) int reconnectState, reconnectCount; + /* * This is the logic behind the reconnect variables: * We have four reconnect "states". We start off not requiring anything diff --git a/usr.sbin/ppp/vjcomp.c b/usr.sbin/ppp/vjcomp.c index 3e02623..f18f8d6 100644 --- a/usr.sbin/ppp/vjcomp.c +++ b/usr.sbin/ppp/vjcomp.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: vjcomp.c,v 1.7 1997/05/07 23:30:50 brian Exp $ + * $Id: vjcomp.c,v 1.8 1997/06/09 03:27:43 brian Exp $ * * TODO: */ @@ -29,7 +29,7 @@ #include "hdlc.h" #include "ipcp.h" -#define MAX_VJHEADER 16 /* Maximum size of compressed header */ +#define MAX_VJHEADER 16 /* Maximum size of compressed header */ struct slcompress cslc; @@ -40,17 +40,16 @@ VjInit() } void -SendPppFrame(bp) -struct mbuf *bp; +SendPppFrame(struct mbuf * bp) { int type; int proto; int cproto = IpcpInfo.his_compproto >> 16; LogPrintf(LogDEBUG, "SendPppFrame: proto = %x\n", IpcpInfo.his_compproto); - if (((struct ip *)MBUF_CTOP(bp))->ip_p == IPPROTO_TCP - && cproto== PROTO_VJCOMP) { - type = sl_compress_tcp(bp, (struct ip *)MBUF_CTOP(bp), &cslc, IpcpInfo.his_compproto & 0xff); + if (((struct ip *) MBUF_CTOP(bp))->ip_p == IPPROTO_TCP + && cproto == PROTO_VJCOMP) { + type = sl_compress_tcp(bp, (struct ip *) MBUF_CTOP(bp), &cslc, IpcpInfo.his_compproto & 0xff); LogPrintf(LogDEBUG, "SendPppFrame: type = %x\n", type); switch (type) { @@ -74,20 +73,19 @@ struct mbuf *bp; } static struct mbuf * -VjUncompressTcp(bp, type) -struct mbuf *bp; -u_char type; +VjUncompressTcp(struct mbuf * bp, u_char type) { u_char *bufp; int len, olen, rlen; struct mbuf *nbp; - u_char work[MAX_HDR+MAX_VJHEADER]; /* enough to hold TCP/IP header */ + u_char work[MAX_HDR + MAX_VJHEADER]; /* enough to hold TCP/IP header */ olen = len = plength(bp); if (type == TYPE_UNCOMPRESSED_TCP) { + /* - * Uncompressed packet does NOT change its size, so that we can - * use mbuf space for uncompression job. + * Uncompressed packet does NOT change its size, so that we can use mbuf + * space for uncompression job. */ bufp = MBUF_CTOP(bp); len = sl_uncompress_tcp(&bufp, len, type, &cslc); @@ -95,16 +93,16 @@ u_char type; pfree(bp); bp = NULLBUFF; } - return(bp); + return (bp); } + /* - * Handle compressed packet. - * 1) Read upto MAX_VJHEADER bytes into work space. - * 2) Try to uncompress it. - * 3) Compute amount of necesary space. - * 4) Copy unread data info there. + * Handle compressed packet. 1) Read upto MAX_VJHEADER bytes into work + * space. 2) Try to uncompress it. 3) Compute amount of necesary space. 4) + * Copy unread data info there. */ - if (len > MAX_VJHEADER) len = MAX_VJHEADER; + if (len > MAX_VJHEADER) + len = MAX_VJHEADER; rlen = len; bufp = work + MAX_HDR; bp = mbread(bp, bufp, rlen); @@ -118,13 +116,11 @@ u_char type; nbp = mballoc(len, MB_VJCOMP); bcopy(bufp, MBUF_CTOP(nbp), len); nbp->next = bp; - return(nbp); + return (nbp); } struct mbuf * -VjCompInput(bp, proto) -struct mbuf *bp; -int proto; +VjCompInput(struct mbuf * bp, int proto) { u_char type; @@ -140,8 +136,8 @@ int proto; break; default: LogPrintf(LogERROR, "VjCompInput...???\n"); - return(bp); + return (bp); } bp = VjUncompressTcp(bp, type); - return(bp); + return (bp); } |