mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
dca75fd7c2
It seems that by adding one pipe-specific exception to route announcement code and by adding one argument to rt_notify() callback i could completely eliminate the need for the phantom protocol instance and therefore make the code more straightforward. It will also fix some minor bugs (like ignoring debug flag changes from the command line).
41 lines
1001 B
C
41 lines
1001 B
C
/*
|
|
* BIRD -- Table-to-Table Routing Protocol a.k.a Pipe
|
|
*
|
|
* (c) 1999 Martin Mares <mj@ucw.cz>
|
|
*
|
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
|
*/
|
|
|
|
#ifndef _BIRD_PIPE_H_
|
|
#define _BIRD_PIPE_H_
|
|
|
|
#define PIPE_OPAQUE 0
|
|
#define PIPE_TRANSPARENT 1
|
|
|
|
struct pipe_config {
|
|
struct proto_config c;
|
|
struct rtable_config *peer; /* Table we're connected to */
|
|
int mode; /* PIPE_OPAQUE or PIPE_TRANSPARENT */
|
|
};
|
|
|
|
struct pipe_proto {
|
|
struct proto p;
|
|
struct rtable *peer;
|
|
struct proto_stats peer_stats; /* Statistics for the direction peer->primary */
|
|
int mode; /* PIPE_OPAQUE or PIPE_TRANSPARENT */
|
|
};
|
|
|
|
|
|
extern struct protocol proto_pipe;
|
|
|
|
static inline int proto_is_pipe(struct proto *p)
|
|
{ return p->proto == &proto_pipe; }
|
|
|
|
static inline struct rtable * pipe_get_peer_table(struct proto *P)
|
|
{ return ((struct pipe_proto *) P)->peer; }
|
|
|
|
static inline struct proto_stats * pipe_get_peer_stats(struct proto *P)
|
|
{ return &((struct pipe_proto *) P)->peer_stats; }
|
|
|
|
#endif
|