mirror of
https://git.FreeBSD.org/src.git
synced 2024-10-19 02:29:40 +00:00
- Define fddibroadcastaddr in if_fddisubr.c.
- Add fddi_ifdetach() and fddi_ioctl().
This commit is contained in:
parent
3880eed1bc
commit
c772c98600
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=93382
@ -88,17 +88,21 @@ struct fddi_header {
|
||||
};
|
||||
|
||||
#if defined(_KERNEL)
|
||||
#define fddibroadcastaddr etherbroadcastaddr
|
||||
#define fddi_ipmulticast_min ether_ipmulticast_min
|
||||
#define fddi_ipmulticast_max ether_ipmulticast_max
|
||||
#define fddi_addmulti ether_addmulti
|
||||
#define fddi_delmulti ether_delmulti
|
||||
#define fddi_sprintf ether_sprintf
|
||||
|
||||
void fddi_ifattach(struct ifnet *);
|
||||
void fddi_input(struct ifnet *, struct fddi_header *, struct mbuf *);
|
||||
int fddi_output(struct ifnet *,
|
||||
struct mbuf *, struct sockaddr *, struct rtentry *);
|
||||
#define FDDI_BPF_UNSUPPORTED 0
|
||||
#define FDDI_BPF_SUPPORTED 1
|
||||
|
||||
void fddi_ifattach(struct ifnet *);
|
||||
void fddi_ifdetach(struct ifnet *, int);
|
||||
void fddi_input(struct ifnet *, struct fddi_header *, struct mbuf *);
|
||||
int fddi_output(struct ifnet *, struct mbuf *, struct sockaddr *,
|
||||
struct rtentry *);
|
||||
int fddi_ioctl(struct ifnet *, int, caddr_t);
|
||||
|
||||
#endif /* _KERNEL */
|
||||
#endif /* _NET_FDDI_H_ */
|
||||
|
@ -91,6 +91,9 @@ extern u_char at_org_code[ 3 ];
|
||||
extern u_char aarp_org_code[ 3 ];
|
||||
#endif /* NETATALK */
|
||||
|
||||
static u_char fddibroadcastaddr[FDDI_ADDR_LEN] =
|
||||
{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||
|
||||
static int fddi_resolvemulti(struct ifnet *, struct sockaddr **,
|
||||
struct sockaddr *);
|
||||
|
||||
@ -551,6 +554,102 @@ fddi_ifattach(ifp)
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
fddi_ifdetach(ifp, bpf)
|
||||
struct ifnet *ifp;
|
||||
int bpf;
|
||||
{
|
||||
|
||||
if (bpf)
|
||||
bpfdetach(ifp);
|
||||
|
||||
if_detach(ifp);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
int
|
||||
fddi_ioctl (ifp, command, data)
|
||||
struct ifnet *ifp;
|
||||
int command;
|
||||
caddr_t data;
|
||||
{
|
||||
struct ifaddr *ifa;
|
||||
struct ifreq *ifr;
|
||||
int error;
|
||||
|
||||
ifa = (struct ifaddr *) data;
|
||||
ifr = (struct ifreq *) data;
|
||||
error = 0;
|
||||
|
||||
switch (command) {
|
||||
case SIOCSIFADDR:
|
||||
ifp->if_flags |= IFF_UP;
|
||||
|
||||
switch (ifa->ifa_addr->sa_family) {
|
||||
#ifdef INET
|
||||
case AF_INET: /* before arpwhohas */
|
||||
ifp->if_init(ifp->if_softc);
|
||||
arp_ifinit(ifp, ifa);
|
||||
break;
|
||||
#endif
|
||||
#ifdef IPX
|
||||
/*
|
||||
* XXX - This code is probably wrong
|
||||
*/
|
||||
case AF_IPX: {
|
||||
struct ipx_addr *ina;
|
||||
struct arpcom *ac;
|
||||
|
||||
ina = &(IA_SIPX(ifa)->sipx_addr);
|
||||
ac = IFP2AC(ifp);
|
||||
|
||||
if (ipx_nullhost(*ina)) {
|
||||
ina->x_host = *(union ipx_host *)
|
||||
ac->ac_enaddr;
|
||||
} else {
|
||||
bcopy((caddr_t) ina->x_host.c_host,
|
||||
(caddr_t) ac->ac_enaddr,
|
||||
sizeof(ac->ac_enaddr));
|
||||
}
|
||||
|
||||
/*
|
||||
* Set new address
|
||||
*/
|
||||
ifp->if_init(ifp->if_softc);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
ifp->if_init(ifp->if_softc);
|
||||
break;
|
||||
}
|
||||
case SIOCGIFADDR: {
|
||||
struct sockaddr *sa;
|
||||
|
||||
sa = (struct sockaddr *) & ifr->ifr_data;
|
||||
bcopy(IFP2AC(ifp)->ac_enaddr,
|
||||
(caddr_t) sa->sa_data, FDDI_ADDR_LEN);
|
||||
|
||||
}
|
||||
break;
|
||||
case SIOCSIFMTU:
|
||||
/*
|
||||
* Set the interface MTU.
|
||||
*/
|
||||
if (ifr->ifr_mtu > FDDIMTU) {
|
||||
error = EINVAL;
|
||||
} else {
|
||||
ifp->if_mtu = ifr->ifr_mtu;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return (error);
|
||||
}
|
||||
|
||||
static int
|
||||
fddi_resolvemulti(ifp, llsa, sa)
|
||||
struct ifnet *ifp;
|
||||
|
Loading…
Reference in New Issue
Block a user