Logo Search packages:      
Sourcecode: nmap version File versions  Download package

intf.h

/*
 * intf.c
 *
 * Network interface operations.
 *
 * Copyright (c) 2000 Dug Song <dugsong@monkey.org>
 *
 * $Id: intf.h,v 1.16 2004/01/13 07:41:09 dugsong Exp $
 */

#ifndef DNET_INTF_H
#define DNET_INTF_H

/*
 * Interface entry
 */
#define INTF_NAME_LEN   16

struct intf_entry {
      u_int       intf_len;             /* length of entry */
      char        intf_name[INTF_NAME_LEN];   /* interface name */
      u_short           intf_type;            /* interface type (r/o) */
      u_short           intf_flags;           /* interface flags */
      u_int       intf_mtu;             /* interface MTU */
      struct addr intf_addr;            /* interface address */
      struct addr intf_dst_addr;              /* point-to-point dst */
      struct addr intf_link_addr;             /* link-layer address */
      u_int       intf_alias_num;             /* number of aliases */
      struct addr intf_alias_addrs __flexarr; /* array of aliases */
};

/*
 * MIB-II interface types - http://www.iana.org/assignments/ianaiftype-mib
 */
#define INTF_TYPE_OTHER       1     /* other */
#define INTF_TYPE_ETH         6     /* Ethernet */
#define INTF_TYPE_TOKENRING   9     /* Token Ring */
#define INTF_TYPE_FDDI        15    /* FDDI */
#define INTF_TYPE_PPP         23    /* Point-to-Point Protocol */
#define INTF_TYPE_LOOPBACK    24    /* software loopback */
#define INTF_TYPE_SLIP        28    /* Serial Line Interface Protocol */
#define INTF_TYPE_TUN         53    /* proprietary virtual/internal */

/*
 * Interface flags
 */
#define INTF_FLAG_UP          0x01  /* enable interface */
#define INTF_FLAG_LOOPBACK    0x02  /* is a loopback net (r/o) */
#define INTF_FLAG_POINTOPOINT 0x04  /* point-to-point link (r/o) */
#define INTF_FLAG_NOARP       0x08  /* disable ARP */
#define INTF_FLAG_BROADCAST   0x10  /* supports broadcast (r/o) */
#define INTF_FLAG_MULTICAST   0x20  /* supports multicast (r/o) */

typedef struct intf_handle intf_t;

typedef int (*intf_handler)(const struct intf_entry *entry, void *arg);

__BEGIN_DECLS
intf_t      *intf_open(void);
int    intf_get(intf_t *i, struct intf_entry *entry);
int    intf_get_src(intf_t *i, struct intf_entry *entry, struct addr *src);
int    intf_get_dst(intf_t *i, struct intf_entry *entry, struct addr *dst);
int    intf_set(intf_t *i, const struct intf_entry *entry);
int    intf_loop(intf_t *i, intf_handler callback, void *arg);
intf_t      *intf_close(intf_t *i);

__END_DECLS

#endif /* DNET_INTF_H */

Generated by  Doxygen 1.6.0   Back to index