| 75 | extern void uma_startup1(vm_offset_t); |
| 76 | |
| 77 | int lo_set_defaultaddr(void) |
| 78 | { |
| 79 | struct in_aliasreq req; |
| 80 | char *addr="127.0.0.1"; |
| 81 | char *netmask="255.0.0.0"; |
| 82 | struct ifnet *ifp=NULL; |
| 83 | int ret; |
| 84 | |
| 85 | IFNET_WLOCK(); |
| 86 | CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) |
| 87 | if ( (ifp->if_flags & IFF_LOOPBACK) != 0 ) |
| 88 | break; |
| 89 | IFNET_WUNLOCK(); |
| 90 | |
| 91 | if(ifp == NULL) |
| 92 | return -1; |
| 93 | |
| 94 | bzero(&req, sizeof req); |
| 95 | strcpy(req.ifra_name, ifp->if_xname); |
| 96 | |
| 97 | struct sockaddr_in sa; |
| 98 | bzero(&sa, sizeof(sa)); |
| 99 | |
| 100 | sa.sin_len = sizeof(sa); |
| 101 | sa.sin_family = AF_INET; |
| 102 | |
| 103 | inet_pton(AF_INET, addr, &sa.sin_addr.s_addr); |
| 104 | bcopy(&sa, &req.ifra_addr, sizeof(sa)); |
| 105 | |
| 106 | inet_pton(AF_INET, netmask, &sa.sin_addr.s_addr); |
| 107 | bcopy(&sa, &req.ifra_mask, sizeof(sa)); |
| 108 | |
| 109 | //sa.sin_addr.s_addr = sc->broadcast; |
| 110 | //bcopy(&sa, &req.ifra_broadaddr, sizeof(sa)); |
| 111 | |
| 112 | struct socket *so = NULL; |
| 113 | ret = socreate(AF_INET, &so, SOCK_DGRAM, 0, curthread->td_ucred, curthread); |
| 114 | if(ret != 0) |
| 115 | return ret; |
| 116 | |
| 117 | ret = ifioctl(so, SIOCAIFADDR, (caddr_t)&req, curthread); |
| 118 | soclose(so); |
| 119 | |
| 120 | return ret; |
| 121 | } |
| 122 | |
| 123 | int |
| 124 | ff_freebsd_init(void) |