1
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-11-06 01:40:42 +01:00
bird/nest/iface.h
Martin Mares 8a48ecb8b1 Implemented scanning of network interfaces. Mostly very ugly code due to
terrible kernel interface (SIOGIFCONF and friends).
1998-05-26 21:42:05 +00:00

63 lines
1.3 KiB
C

/*
* BIRD Internet Routing Daemon -- Network Interfaces
*
* (c) 1998 Martin Mares <mj@ucw.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
#ifndef _BIRD_IFACE_H_
#define _BIRD_IFACE_H_
#include "lib/lists.h"
extern list iface_list;
struct iface {
node n;
char name[16];
unsigned flags;
unsigned mtu;
struct ifa *ifa; /* First address is primary */
unsigned index; /* OS-dependent interface index */
};
#define IF_UP 1
#define IF_MULTIACCESS 2
#define IF_UNNUMBERED 4
#define IF_BROADCAST 8
#define IF_MULTICAST 16
#define IF_TUNNEL 32
#define IF_ADMIN_DOWN 64
#define IF_LOOPBACK 128
#define IF_IGNORE 256
#define IF_UPDATED 0x1000 /* Touched in last scan */
/* Interface address */
struct ifa {
struct ifa *next;
ip_addr ip; /* IP address of this host */
ip_addr prefix; /* Network prefix */
unsigned pxlen; /* Prefix length */
ip_addr brd; /* Broadcast address */
ip_addr opposite; /* Opposite end of a point-to-point link */
struct neighbor *neigh; /* List of neighbors on this interface */
};
/* Interface change events */
#define IF_CHANGE_UP 1
#define IF_CHANGE_DOWN 2
#define IF_CHANGE_FLAGS 4
#define IF_CHANGE_MTU 8
#define IF_CHANGE_ADDR 16
void if_init(void);
void if_dump(struct iface *);
void if_dump_all(void);
void if_update(struct iface *);
void if_end_update(void);
#endif