1999-11-17 15:50:41 +00:00
|
|
|
/*
|
|
|
|
* BIRD -- OSPF
|
|
|
|
*
|
2004-06-26 20:15:34 +00:00
|
|
|
* (c) 1999--2004 Ondrej Filip <feela@network.cz>
|
1999-11-17 15:50:41 +00:00
|
|
|
*
|
|
|
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _BIRD_OSPF_PACKET_H_
|
|
|
|
#define _BIRD_OSPF_PACKET_H_
|
|
|
|
|
2004-06-26 20:15:34 +00:00
|
|
|
void ospf_pkt_fill_hdr(struct ospf_iface *ifa, void *buf, u8 h_type);
|
|
|
|
unsigned ospf_pkt_maxsize(struct ospf_iface *ifa);
|
2004-06-06 09:37:54 +00:00
|
|
|
int ospf_rx_hook(sock * sk, int size);
|
|
|
|
void ospf_tx_hook(sock * sk);
|
|
|
|
void ospf_err_hook(sock * sk, int err);
|
2012-10-02 09:44:05 +00:00
|
|
|
void ospf_send_to(struct ospf_iface *ifa, ip_addr ip);
|
|
|
|
|
2009-09-04 09:06:51 +00:00
|
|
|
void ospf_send_to_agt(struct ospf_iface *ifa, u8 state);
|
|
|
|
void ospf_send_to_bdr(struct ospf_iface *ifa);
|
2004-06-25 16:39:53 +00:00
|
|
|
|
2012-10-02 09:44:05 +00:00
|
|
|
static inline void ospf_send_to_all(struct ospf_iface *ifa)
|
2012-10-19 14:26:51 +00:00
|
|
|
{ ospf_send_to(ifa, ifa->all_routers); }
|
2012-10-02 09:44:05 +00:00
|
|
|
|
|
|
|
static inline void ospf_send_to_des(struct ospf_iface *ifa)
|
|
|
|
{
|
|
|
|
if (ipa_nonzero(ifa->des_routers))
|
|
|
|
ospf_send_to(ifa, ifa->des_routers);
|
|
|
|
else
|
|
|
|
ospf_send_to_bdr(ifa);
|
|
|
|
}
|
2012-05-14 09:47:41 +00:00
|
|
|
|
2012-10-19 14:26:51 +00:00
|
|
|
static inline unsigned ospf_pkt_hdrlen(struct proto_ospf *po)
|
|
|
|
{
|
|
|
|
return ospf_is_v2(po) ?
|
|
|
|
(sizeof(struct ospf_packet) + sizeof(union ospf_auth)) :
|
|
|
|
sizeof(struct ospf_packet);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline void * ospf_tx_buffer(struct ospf_iface *ifa)
|
|
|
|
{ return ifa->sk->tbuf; }
|
1999-11-17 15:50:41 +00:00
|
|
|
|
2012-10-19 14:26:51 +00:00
|
|
|
static inline unsigned ospf_pkt_bufsize(struct ospf_iface *ifa)
|
2010-11-04 16:22:43 +00:00
|
|
|
{
|
2012-10-02 09:44:05 +00:00
|
|
|
/* Reserve buffer space for authentication footer */
|
2012-10-19 14:26:51 +00:00
|
|
|
unsigned res_size = (ifa->autype == OSPF_AUTH_CRYPT) ? OSPF_AUTH_CRYPT_SIZE : 0;
|
|
|
|
return ifa->sk->tbsize - res_size;
|
2010-11-04 16:22:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1999-11-17 15:50:41 +00:00
|
|
|
#endif /* _BIRD_OSPF_PACKET_H_ */
|