Lines Matching refs:rdev

105 	struct rarpdev		*rdev;		/* which device reply for */  member
154 struct rarpdev *rdev; in main() local
263 for (rdev = rarpdev_head; rdev != NULL; rdev = rdev->next) { in main()
264 init_rarpdev(rdev); in main()
280 for (rdev = rarpdev_head; rdev != NULL; rdev = rdev->next) { in main()
281 if (rdev->dh_rarp != NULL) { in main()
283 (void *(*)(void *))do_rarp, (void *)rdev, in main()
305 struct rarpdev *rdev; in getintf() local
355 if ((rdev = find_device(&ifsp)) == NULL) { in getintf()
356 rdev = calloc(1, sizeof (struct rarpdev)); in getintf()
357 if (rdev == NULL) in getintf()
360 (void) strlcpy(rdev->device, ifsp.ifsp_devnm, in getintf()
361 sizeof (rdev->device)); in getintf()
362 rdev->unit = ifsp.ifsp_ppa; in getintf()
364 rdev->next = rarpdev_head; in getintf()
365 rarpdev_head = rdev; in getintf()
379 ifdev->next = rdev->ifdev; in getintf()
380 rdev->ifdev = ifdev; in getintf()
388 struct rarpdev *rdev; in find_device() local
390 for (rdev = rarpdev_head; rdev != NULL; rdev = rdev->next) { in find_device()
391 if (specp->ifsp_ppa == rdev->unit && in find_device()
392 strcmp(specp->ifsp_devnm, rdev->device) == 0) in find_device()
393 return (rdev); in find_device()
399 init_rarpdev(struct rarpdev *rdev) in init_rarpdev() argument
410 (void) snprintf(linkname, DLPI_LINKNAME_MAX, "%s%d", rdev->device, in init_rarpdev()
411 rdev->unit); in init_rarpdev()
428 if ((retval = dlpi_get_physaddr(dh, DL_CURR_PHYS_ADDR, rdev->physaddr, in init_rarpdev()
434 rdev->physaddrlen = physaddrlen; in init_rarpdev()
435 rdev->ifrarplen = sizeof (struct arphdr) + (2 * sizeof (ipaddr_t)) + in init_rarpdev()
439 str = _link_ntoa(rdev->physaddr, str, in init_rarpdev()
440 rdev->physaddrlen, IFT_OTHER); in init_rarpdev()
450 rdev->dh_rarp = dh; in init_rarpdev()
456 for (ifdev = rdev->ifdev; ifdev != NULL; ifdev = ifdev->next) { in init_rarpdev()
461 dev = rdev->device; in init_rarpdev()
462 unit = rdev->unit; in init_rarpdev()
480 struct rarpdev *rdev = buf; in do_rarp() local
485 size_t anslen = rdev->ifrarplen; in do_rarp()
489 if (((shost = malloc(rdev->physaddrlen)) == NULL) || in do_rarp()
490 ((ans = malloc(rdev->ifrarplen)) == NULL)) in do_rarp()
494 str = _link_ntoa(rdev->physaddr, str, rdev->physaddrlen, in do_rarp()
498 " address %s", rdev->device, rdev->unit, str); in do_rarp()
508 retval = dlpi_recv(rdev->dh_rarp, shost, in do_rarp()
513 error("error in dlpi_recv %s: %s", rdev->dh_rarp, in do_rarp()
519 if (anslen < rdev->ifrarplen) in do_rarp()
525 else if (ans->ar_hln != rdev->physaddrlen) in do_rarp()
541 rarp_request(rdev, ans, shost); in do_rarp()
545 arp_request(rdev, ans, shost); in do_rarp()
570 rarp_request(struct rarpdev *rdev, struct arphdr *rp, uchar_t *shost) in rarp_request() argument
584 str = _link_ntoa(thap, str, rdev->physaddrlen, IFT_OTHER); in rarp_request()
594 if ((memcmp(shap, thap, rdev->physaddrlen) != 0) || in rarp_request()
595 (memcmp(shap, shost, rdev->physaddrlen) != 0)) { in rarp_request()
603 (void) memcpy(shap, rdev->physaddr, rdev->physaddrlen); in rarp_request()
609 if (get_ipaddr(rdev, thap, tpap, &spa)) in rarp_request()
613 add_arp(rdev, tpap, thap); in rarp_request()
624 rrp = calloc(1, sizeof (struct rarpreply) + rdev->physaddrlen + in rarp_request()
625 rdev->ifrarplen); in rarp_request()
629 rrp->arprep = rrp->lldest + rdev->physaddrlen; in rarp_request()
636 rrp->rdev = rdev; in rarp_request()
637 (void) memcpy(rrp->lldest, shost, rdev->physaddrlen); in rarp_request()
638 (void) memcpy(rrp->arprep, rp, rdev->ifrarplen); in rarp_request()
646 retval = dlpi_send(rdev->dh_rarp, rrp->lldest, in rarp_request()
647 rdev->physaddrlen, rrp->arprep, rdev->ifrarplen, NULL); in rarp_request()
655 delay_write(rdev, rrp); in rarp_request()
663 add_arp(struct rarpdev *rdev, uchar_t *ip, uchar_t *laddr) in add_arp() argument
686 (void) memcpy(LLADDR(&ar.xarp_ha), laddr, rdev->physaddrlen); in add_arp()
687 ar.xarp_ha.sdl_alen = rdev->physaddrlen; in add_arp()
704 arp_request(struct rarpdev *rdev, struct arphdr *rp, uchar_t *shost) in arp_request() argument
719 for (ifdev = rdev->ifdev; ifdev != NULL; ifdev = ifdev->next) { in arp_request()
727 (void) memcpy(shap, rdev->physaddr, rdev->physaddrlen); in arp_request()
729 (void) memcpy(thap, rdev->physaddr, rdev->physaddrlen); in arp_request()
731 add_arp(rdev, tpap, thap); in arp_request()
736 rrp = calloc(1, sizeof (struct rarpreply) + rdev->physaddrlen + in arp_request()
737 rdev->ifrarplen); in arp_request()
741 rrp->arprep = rrp->lldest + rdev->physaddrlen; in arp_request()
742 rrp->rdev = rdev; in arp_request()
744 (void) memcpy(rrp->lldest, shost, rdev->physaddrlen); in arp_request()
745 (void) memcpy(rrp->arprep, rp, rdev->ifrarplen); in arp_request()
747 retval = dlpi_send(rdev->dh_rarp, rrp->lldest, rdev->physaddrlen, in arp_request()
748 rrp->arprep, rdev->ifrarplen, NULL); in arp_request()
760 struct rarpdev *rdev; in do_delay_write() local
772 rdev = rrp->rdev; in do_delay_write()
780 err = dlpi_send(rdev->dh_rarp, rrp->lldest, rdev->physaddrlen, in do_delay_write()
781 rrp->arprep, rdev->ifrarplen, NULL); in do_delay_write()
791 delay_write(struct rarpdev *rdev, struct rarpreply *rrp) in delay_write() argument
907 get_ipaddr(struct rarpdev *rdev, uchar_t *laddr, uchar_t *ipp, ipaddr_t *ipaddr) in get_ipaddr() argument
917 if (rdev->physaddrlen != ETHERADDRL) { in get_ipaddr()
941 for (ifdev = rdev->ifdev; ifdev != NULL; ifdev = ifdev->next) { in get_ipaddr()