2 struct atif_data *aid_next, *aid_prev;
3 char aid_name[ IFNAMSIZ ];
4 unchar aid_hwaddr[ ETHERADDRL ];
5 queue_t *aid_q; /* RD() side */
8 struct sockaddr_at aid_sat;
9 struct netrange aid_nr;
10 struct aarplist *aid_aarplist, *aid_aarpflist;
11 /* solaris 7 wants timeout_id_t, but solaris 2.6 doesn't have that.
12 * so, we compromise with an unsigned long as we know that's big
13 * enough to hold a pointer. */
14 unsigned long aid_aarptimeo;
16 * A little bit of cleverness, to overcome the inability of
17 * streams to sleep. The type of context must be checked before
18 * the data is accessed. The atif_data can't be freed if the
22 int c_type; /* ioctl command */
24 struct { /* unit select */
28 struct { /* set addr */
35 struct { /* add multi */
43 #define AIDF_LOOPBACK (1<<0)
44 #define AIDF_PROBING (1<<1)
45 #define AIDF_PROBEFAILED (1<<2)
47 extern u_char at_multicastaddr[ ETHERADDRL ];
48 extern u_char at_org_code[ 3 ];
49 extern u_char aarp_org_code[ 3 ];
51 int if_setaddr( queue_t *, mblk_t *, char *,
52 struct sockaddr_at * );
53 int if_getaddr( char *, struct sockaddr_at * );
54 int if_addmulti( queue_t *, mblk_t *, char *,
57 struct atif_data *if_alloc( queue_t * );
58 void if_free( struct atif_data * );
59 int if_name( struct atif_data *, char *, ulong );
60 int if_attach( struct atif_data *, char * );
61 struct atif_data *if_primary( void );
62 struct atif_data *if_dest( struct atif_data *, struct sockaddr_at * );
63 struct atif_data *if_withaddr( struct sockaddr_at * );
64 struct atif_data *if_withnet( struct sockaddr_at * );
65 int if_route( struct atif_data *, mblk_t *,
66 struct sockaddr_at * );
68 int dl_unitdata_req( queue_t *, mblk_t *, ushort, caddr_t );
69 int dl_enabmulti_req( queue_t *, caddr_t );
70 void aarp_send( struct atif_data *, int, caddr_t,
72 int aarp_rput( queue_t *, mblk_t * );
73 int aarp_resolve( struct atif_data *, mblk_t *,
74 struct sockaddr_at *);
75 void aarp_init( struct atif_data * );
76 void aarp_clean( struct atif_data * );
77 int ddp_rput( struct atif_data *, mblk_t * );