- case SIOCGLIFPHYADDR:
- GIF_LOCK(sc);
- if (sc->gif_psrc == NULL || sc->gif_pdst == NULL) {
- GIF_UNLOCK(sc);
- error = EADDRNOTAVAIL;
- goto bad;
- }
-
- /* copy src */
- src = sc->gif_psrc;
- dst = (struct sockaddr *)
- &(((struct if_laddrreq *)data)->addr);
- size = sizeof (((struct if_laddrreq *)data)->addr);
- if (src->sa_len > size) {
- GIF_UNLOCK(sc);
- return (EINVAL);
- }
- bcopy((caddr_t)src, (caddr_t)dst, src->sa_len);
-
- /* copy dst */
- src = sc->gif_pdst;
- dst = (struct sockaddr *)
- &(((struct if_laddrreq *)data)->dstaddr);
- size = sizeof (((struct if_laddrreq *)data)->dstaddr);
- if (src->sa_len > size) {
- GIF_UNLOCK(sc);
- return (EINVAL);
- }
- bcopy((caddr_t)src, (caddr_t)dst, src->sa_len);
- GIF_UNLOCK(sc);
- break;
-