Deleted Added
full compact
103a104
> struct netrange at_nr; /* AppleTalk net range */
122a124
> int setatrange(), setatphase(), checkatrange();
152a155,156
> { "range", NEXTARG, setatrange },
> { "phase", NEXTARG, setatphase },
206c210
< SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
---
> SIOCDIFADDR, SIOCAIFADDR, C(addreq), C(addreq) },
451a456,457
> if (af == AF_APPLETALK)
> checkatrange((struct sockaddr_at *) &addreq.ifra_addr);
769a776
> struct netrange *nr;
777d783
< /* warnx("%s has no AF_APPLETALK IFA address!", name); */
780,782c786,789
< printf("\tatalk %d.%d ",
< ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node);
<
---
> nr = (struct netrange *) &sat->sat_zero;
> printf("\tatalk %d.%d range %d-%d phase %d",
> ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node,
> ntohs(nr->nr_firstnet), ntohs(nr->nr_lastnet), nr->nr_phase);
788c795
< printf("--> %d.%d ",
---
> printf("--> %d.%d",
790a798,805
> if (flags & IFF_BROADCAST) {
> /* note RTAX_BRD overlap with IFF_POINTOPOINT */
> sat = (struct sockaddr_at *)info.rti_info[RTAX_BRD];
> if (sat)
> printf(" broadcast %d.%d",
> ntohs(sat->sat_addr.s_net),
> sat->sat_addr.s_node);
> }
990,996c1005
< #define SATALK(x) ((struct sockaddr_at *) &(x))
< struct sockaddr_at *atalktab[] = {
< SATALK(ridreq.ifr_addr), SATALK(addreq.ifra_addr),
< SATALK(addreq.ifra_mask), SATALK(addreq.ifra_broadaddr)};
<
< at_getaddr(addr, which)
< char *addr;
---
> at_getaddr(char *addr, int which)
998c1007
< struct sockaddr_at *sat = atalktab[which];
---
> struct sockaddr_at *sat = (struct sockaddr_at *) &addreq.ifra_addr;
1001c1010
< sat->sat_family = AF_IPX;
---
> sat->sat_family = AF_APPLETALK;
1002a1012,1013
> if (which == MASK)
> errx(1, "AppleTalk does not use netmasks\n");
1004,1005c1015,1016
< /* || net == 0 || net > 0xffff || node == 0 || node > 0xfe */ )
< errx(1, "%s: bad value", addr);
---
> || net == 0 || net > 0xffff || node == 0 || node > 0xfe)
> errx(1, "%s: illegal address", addr);
1008,1010d1018
< if (which == MASK)
< printf("Attempt to set AppleTalk netmask"
< " will be ineffectual\n");
1012a1021,1060
> setatrange(char *range)
> {
> u_short first = 123, last = 123;
>
> if (sscanf(range, "%hu-%hu", &first, &last) != 2
> || first == 0 || first > 0xffff
> || last == 0 || last > 0xffff || first > last)
> errx(1, "%s: illegal net range: %u-%u", range, first, last);
> at_nr.nr_firstnet = htons(first);
> at_nr.nr_lastnet = htons(last);
> }
>
> setatphase(char *phase)
> {
> if (!strcmp(phase, "1"))
> at_nr.nr_phase = 1;
> else if (!strcmp(phase, "2"))
> at_nr.nr_phase = 2;
> else
> errx(1, "%s: illegal phase", phase);
> }
>
> checkatrange(struct sockaddr_at *sat)
> {
> if (at_nr.nr_phase == 0)
> at_nr.nr_phase = 2; /* Default phase 2 */
> if (at_nr.nr_firstnet == 0)
> at_nr.nr_firstnet = /* Default range of one */
> at_nr.nr_lastnet = sat->sat_addr.s_net;
> printf("\tatalk %d.%d range %d-%d phase %d\n",
> ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node,
> ntohs(at_nr.nr_firstnet), ntohs(at_nr.nr_lastnet), at_nr.nr_phase);
> if ((u_short) ntohs(at_nr.nr_firstnet) >
> (u_short) ntohs(sat->sat_addr.s_net)
> || (u_short) ntohs(at_nr.nr_lastnet) <
> (u_short) ntohs(sat->sat_addr.s_net))
> errx(1, "AppleTalk address is not in range");
> *((struct netrange *) &sat->sat_zero) = at_nr;
> }
>