summaryrefslogtreecommitdiffstats
path: root/proto/ospf/ospf.h
blob: 2965d8e77e4be119d3a638e941e20d57cc30628c (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
64
65
66
67
68
69
70
71
/*
 *	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
#ifndef IPV6
#define AllSPFRouters ipa_from_u32(0xe0000005)	/* 224.0.0.5 */
#define AllDRouters ipa_from_u32(0xe0000006)	/* 224.0.0.6 */
#else
#error Multicast address not defined
#endif


struct ospf_config {
  struct proto_config c;
  u32 area;		/* Area ID  !!! This is wrong !!!
                         * Should respect interface */
  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 drip;		/* Designated router */
  u32 drid;
  ip_addr bdrip;	/* Backup DR */
  u32 bdrid;
  int type;
#define OSPF_IM_BROADCAST 0
#define OSPF_IM_NBMA 1
#define OSPF_IM_PTP 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_ */