MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ether_ioctl

Function ether_ioctl

freebsd/net/if_ethersubr.c:1138–1201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1136}
1137
1138int
1139ether_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
1140{
1141 struct ifaddr *ifa = (struct ifaddr *) data;
1142 struct ifreq *ifr = (struct ifreq *) data;
1143 int error = 0;
1144
1145 switch (command) {
1146 case SIOCSIFADDR:
1147 ifp->if_flags |= IFF_UP;
1148
1149 switch (ifa->ifa_addr->sa_family) {
1150#ifdef INET
1151 case AF_INET:
1152 ifp->if_init(ifp->if_softc); /* before arpwhohas */
1153 arp_ifinit(ifp, ifa);
1154 break;
1155#endif
1156 default:
1157 ifp->if_init(ifp->if_softc);
1158 break;
1159 }
1160 break;
1161
1162 case SIOCGIFADDR:
1163 bcopy(IF_LLADDR(ifp), &ifr->ifr_addr.sa_data[0],
1164 ETHER_ADDR_LEN);
1165 break;
1166
1167 case SIOCSIFMTU:
1168 /*
1169 * Set the interface MTU.
1170 */
1171 if (ifr->ifr_mtu > ETHERMTU) {
1172 error = EINVAL;
1173 } else {
1174 ifp->if_mtu = ifr->ifr_mtu;
1175 }
1176 break;
1177
1178 case SIOCSLANPCP:
1179 error = priv_check(curthread, PRIV_NET_SETLANPCP);
1180 if (error != 0)
1181 break;
1182 if (ifr->ifr_lan_pcp > 7 &&
1183 ifr->ifr_lan_pcp != IFNET_PCP_NONE) {
1184 error = EINVAL;
1185 } else {
1186 ifp->if_pcp = ifr->ifr_lan_pcp;
1187 /* broadcast event about PCP change */
1188 EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_PCP);
1189 }
1190 break;
1191
1192 case SIOCGLANPCP:
1193 ifr->ifr_lan_pcp = ifp->if_pcp;
1194 break;
1195

Callers 15

ieee80211_ioctlFunction · 0.85
arge_ioctlFunction · 0.85
are_ioctlFunction · 0.85
octm_ioctlFunction · 0.85
octe_ioctlFunction · 0.85
nlm_xlpge_ioctlFunction · 0.85
gen_ioctlFunction · 0.85
cpswp_ioctlFunction · 0.85
emac_ioctlFunction · 0.85
awg_ioctlFunction · 0.85
iflib_if_ioctlFunction · 0.85
vxlan_ioctlFunction · 0.85

Calls 2

arp_ifinitFunction · 0.85
priv_checkFunction · 0.50

Tested by

no test coverage detected