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