freebsd-nq/sys/netatalk/at_extern.h

50 lines
1.2 KiB
C
Raw Normal View History

/*
* $FreeBSD$
*/
struct mbuf;
struct sockaddr_at;
#ifdef _NET_IF_ARP_H_
extern timeout_t aarpprobe;
This commit does two things: 1. rt_check() cleanup: rt_check() is only necessary for some address families to gain access to the corresponding arp entry, so call it only in/near the *resolve() routines where it is actually used -- at the moment this is arpresolve(), nd6_storelladdr() (the call is embedded here), and atmresolve() (the call is just before atmresolve to reduce the number of changes). This change will make it a lot easier to decouple the arp table from the routing table. There is an extra call to rt_check() in if_iso88025subr.c to determine the routing info length. I have left it alone for the time being. The interface of arpresolve() and nd6_storelladdr() now changes slightly: + the 'rtentry' parameter (really a hint from the upper level layer) is now passed unchanged from *_output(), so it becomes the route to the final destination and not to the gateway. + the routines will return 0 if resolution is possible, non-zero otherwise. + arpresolve() returns EWOULDBLOCK in case the mbuf is being held waiting for an arp reply -- in this case the error code is masked in the caller so the upper layer protocol will not see a failure. 2. arpcom untangling Where possible, use 'struct ifnet' instead of 'struct arpcom' variables, and use the IFP2AC macro to access arpcom fields. This mostly affects the netatalk code. === Detailed changes: === net/if_arcsubr.c rt_check() cleanup, remove a useless variable net/if_atmsubr.c rt_check() cleanup net/if_ethersubr.c rt_check() cleanup, arpcom untangling net/if_fddisubr.c rt_check() cleanup, arpcom untangling net/if_iso88025subr.c rt_check() cleanup netatalk/aarp.c arpcom untangling, remove a block of duplicated code netatalk/at_extern.h arpcom untangling netinet/if_ether.c rt_check() cleanup (change arpresolve) netinet6/nd6.c rt_check() cleanup (change nd6_storelladdr)
2004-04-25 09:24:52 +00:00
extern int aarpresolve (struct ifnet *,
struct mbuf *,
struct sockaddr_at *,
2002-03-20 02:39:27 +00:00
u_char *);
extern int at_broadcast (struct sockaddr_at *);
#endif
#ifdef _NETATALK_AARP_H_
2002-03-20 02:39:27 +00:00
extern void aarptfree (struct aarptab *);
#endif
struct ifnet;
struct thread;
struct socket;
extern void aarpintr (struct mbuf *);
extern void at1intr (struct mbuf *);
extern void at2intr (struct mbuf *);
2002-03-20 02:39:27 +00:00
extern void aarp_clean (void);
extern int at_control (struct socket *so,
u_long cmd,
caddr_t data,
struct ifnet *ifp,
2002-03-20 02:39:27 +00:00
struct thread *td);
extern u_short at_cksum (struct mbuf *m, int skip);
extern void ddp_init (void);
extern struct at_ifaddr *at_ifawithnet (struct sockaddr_at *);
#ifdef _NETATALK_DDP_VAR_H_
2002-03-20 02:39:27 +00:00
extern int ddp_output (struct mbuf *m, struct socket *so);
#endif
#if defined (_NETATALK_DDP_VAR_H_) && defined(_NETATALK_AT_VAR_H_)
2002-03-20 02:39:27 +00:00
extern struct ddpcb *ddp_search(struct sockaddr_at *,
struct sockaddr_at *,
2002-03-20 02:39:27 +00:00
struct at_ifaddr *);
#endif
#ifdef _NET_ROUTE_H_
2002-03-20 02:39:27 +00:00
int ddp_route(struct mbuf *m, struct route *ro);
#endif