intf.h revision 2632
17151Sgblack@eecs.umich.edu/*
27151Sgblack@eecs.umich.edu * intf.c
37151Sgblack@eecs.umich.edu *
47151Sgblack@eecs.umich.edu * Network interface operations.
57151Sgblack@eecs.umich.edu *
67151Sgblack@eecs.umich.edu * Copyright (c) 2000 Dug Song <dugsong@monkey.org>
77151Sgblack@eecs.umich.edu *
87151Sgblack@eecs.umich.edu * $Id: intf.h,v 1.16 2004/01/13 07:41:09 dugsong Exp $
97151Sgblack@eecs.umich.edu */
107151Sgblack@eecs.umich.edu
117151Sgblack@eecs.umich.edu#ifndef DNET_INTF_H
127151Sgblack@eecs.umich.edu#define DNET_INTF_H
137151Sgblack@eecs.umich.edu
147151Sgblack@eecs.umich.edu/*
157151Sgblack@eecs.umich.edu * Interface entry
167151Sgblack@eecs.umich.edu */
177151Sgblack@eecs.umich.edu#define INTF_NAME_LEN	16
187151Sgblack@eecs.umich.edu
197151Sgblack@eecs.umich.edustruct intf_entry {
207151Sgblack@eecs.umich.edu        u_int		intf_len;		    /* length of entry */
217151Sgblack@eecs.umich.edu        char		intf_name[INTF_NAME_LEN];   /* interface name */
227151Sgblack@eecs.umich.edu        u_short		intf_type;		    /* interface type (r/o) */
237151Sgblack@eecs.umich.edu        u_short		intf_flags;		    /* interface flags */
247151Sgblack@eecs.umich.edu        u_int		intf_mtu;		    /* interface MTU */
257151Sgblack@eecs.umich.edu        struct addr	intf_addr;		    /* interface address */
267151Sgblack@eecs.umich.edu        struct addr	intf_dst_addr;		    /* point-to-point dst */
277151Sgblack@eecs.umich.edu        struct addr	intf_link_addr;		    /* link-layer address */
287151Sgblack@eecs.umich.edu        u_int		intf_alias_num;		    /* number of aliases */
297151Sgblack@eecs.umich.edu        struct addr	intf_alias_addrs __flexarr; /* array of aliases */
307151Sgblack@eecs.umich.edu};
317151Sgblack@eecs.umich.edu
327151Sgblack@eecs.umich.edu/*
337151Sgblack@eecs.umich.edu * MIB-II interface types - http://www.iana.org/assignments/ianaiftype-mib
347151Sgblack@eecs.umich.edu */
357151Sgblack@eecs.umich.edu#define INTF_TYPE_OTHER		1	/* other */
367151Sgblack@eecs.umich.edu#define INTF_TYPE_ETH		6	/* Ethernet */
377151Sgblack@eecs.umich.edu#define INTF_TYPE_TOKENRING	9	/* Token Ring */
387151Sgblack@eecs.umich.edu#define INTF_TYPE_FDDI		15	/* FDDI */
397151Sgblack@eecs.umich.edu#define INTF_TYPE_PPP		23	/* Point-to-Point Protocol */
407151Sgblack@eecs.umich.edu#define INTF_TYPE_LOOPBACK	24	/* software loopback */
417151Sgblack@eecs.umich.edu#define INTF_TYPE_SLIP		28	/* Serial Line Interface Protocol */
427151Sgblack@eecs.umich.edu#define INTF_TYPE_TUN		53	/* proprietary virtual/internal */
437151Sgblack@eecs.umich.edu
447151Sgblack@eecs.umich.edu/*
457151Sgblack@eecs.umich.edu * Interface flags
467151Sgblack@eecs.umich.edu */
477151Sgblack@eecs.umich.edu#define INTF_FLAG_UP		0x01	/* enable interface */
487151Sgblack@eecs.umich.edu#define INTF_FLAG_LOOPBACK	0x02	/* is a loopback net (r/o) */
497594SGene.Wu@arm.com#define INTF_FLAG_POINTOPOINT	0x04	/* point-to-point link (r/o) */
507594SGene.Wu@arm.com#define INTF_FLAG_NOARP		0x08	/* disable ARP */
517151Sgblack@eecs.umich.edu#define INTF_FLAG_BROADCAST	0x10	/* supports broadcast (r/o) */
527151Sgblack@eecs.umich.edu#define INTF_FLAG_MULTICAST	0x20	/* supports multicast (r/o) */
537151Sgblack@eecs.umich.edu
547594SGene.Wu@arm.comtypedef struct intf_handle intf_t;
557151Sgblack@eecs.umich.edu
567594SGene.Wu@arm.comtypedef int (*intf_handler)(const struct intf_entry *entry, void *arg);
577151Sgblack@eecs.umich.edu
587594SGene.Wu@arm.com__BEGIN_DECLS
597151Sgblack@eecs.umich.eduintf_t	*intf_open(void);
607151Sgblack@eecs.umich.eduint	 intf_get(intf_t *i, struct intf_entry *entry);
617151Sgblack@eecs.umich.eduint	 intf_get_src(intf_t *i, struct intf_entry *entry, struct addr *src);
627151Sgblack@eecs.umich.eduint	 intf_get_dst(intf_t *i, struct intf_entry *entry, struct addr *dst);
637151Sgblack@eecs.umich.eduint	 intf_set(intf_t *i, const struct intf_entry *entry);
647151Sgblack@eecs.umich.eduint	 intf_loop(intf_t *i, intf_handler callback, void *arg);
657151Sgblack@eecs.umich.eduintf_t	*intf_close(intf_t *i);
667151Sgblack@eecs.umich.edu__END_DECLS
677151Sgblack@eecs.umich.edu
687151Sgblack@eecs.umich.edu#endif /* DNET_INTF_H */
697151Sgblack@eecs.umich.edu