summaryrefslogtreecommitdiffstats
path: root/proto/ospf/ospf.h
blob: 44a8e79f1bb09819de2d84957d1d9224a7de526a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
 *	BIRD -- OSPF
 *
 *	(c) 1999 Ondrej Filip <feela@network.cz>
 *
 *	Can be freely distributed and used under the terms of the GNU GPL.
 */

#ifndef _BIRD_OSPF_H_
#define _BIRD_OSPF_H_

#define OSPF_PROTO 89
#define AllSPFRouters ipa_from_u32(0xe0000005)	/* 224.0.0.5 */
#define AllDRouters ipa_from_u32(0xe0000006)	/* 224.0.0.6 */

struct ospf_config {
  struct proto_config c;
  ip_addr area;		/* Area ID  !!! This is wrong !!! */
  list iface_list;
};

struct ospf_iface {
  node n;
  list sk_list;		/* List of active sockets */
  struct iface *iface;	/* Nest's iface */
  u32 area;		/* OSPF Area */
  u16 cost;		/* Cost of iface */
  int rxmtint;		/* number of seconds between LSA retransmissions */
  int iftransdelay;	/* The estimated number of seconds it takes to
			   transmit a Link State Update Packet over this
			   interface.  LSAs contained in the update */
  u8 priority;		/* A router priority for DR election */
  u16 helloint;		/* number of seconds between hello sending */
  u32 deadint;		/* after "deadint" missing hellos is router dead */
  u16 autype;
  u8 aukey[8];
  u8 options;
  ip_addr dr;		/* Designated router */
  ip_addr bdr;		/* Backup DR */
  byte mode;
#define OSPF_IM_MULTICAST 0
#define OSPF_IM_PTP 1
#define OSPF_IM_NBMA 2

/* Default values for interface parameters */
#define COST_D 10
#define RXMTINT_D 5
#define IFTRANSDELAY_D 1
#define PRIORITY_D 0
#define HELLOINT_D 10
#define DEADINT_D 4
};


struct ospf_patt {
  struct iface_patt i;

  u16 cost;
  byte mode;
};


#endif /* _BIRD_OSPF_H_ */