Fix configure to enable warnings and fix most of them.
This commit is contained in:
parent
9e43ccf07b
commit
e81b440f68
31 changed files with 102 additions and 106 deletions
|
@ -311,10 +311,12 @@ update_state(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nstate == STATE_PROMPT)
|
if (nstate == STATE_PROMPT)
|
||||||
|
{
|
||||||
if (input_initialized)
|
if (input_initialized)
|
||||||
input_reveal();
|
input_reveal();
|
||||||
else
|
else
|
||||||
input_init();
|
input_init();
|
||||||
|
}
|
||||||
|
|
||||||
if (nstate != STATE_PROMPT)
|
if (nstate != STATE_PROMPT)
|
||||||
input_hide();
|
input_hide();
|
||||||
|
@ -372,6 +374,8 @@ server_connect(void)
|
||||||
die("fcntl: %m");
|
die("fcntl: %m");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define PRINTF(LEN, PARGS...) do { if (!skip_input) len = printf(PARGS); } while(0)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
server_got_reply(char *x)
|
server_got_reply(char *x)
|
||||||
{
|
{
|
||||||
|
@ -379,15 +383,15 @@ server_got_reply(char *x)
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
if (*x == '+') /* Async reply */
|
if (*x == '+') /* Async reply */
|
||||||
skip_input || (len = printf(">>> %s\n", x+1));
|
PRINTF(len, ">>> %s\n", x+1);
|
||||||
else if (x[0] == ' ') /* Continuation */
|
else if (x[0] == ' ') /* Continuation */
|
||||||
skip_input || (len = printf("%s%s\n", verbose ? " " : "", x+1));
|
PRINTF(len, "%s%s\n", verbose ? " " : "", x+1);
|
||||||
else if (strlen(x) > 4 &&
|
else if (strlen(x) > 4 &&
|
||||||
sscanf(x, "%d", &code) == 1 && code >= 0 && code < 10000 &&
|
sscanf(x, "%d", &code) == 1 && code >= 0 && code < 10000 &&
|
||||||
(x[4] == ' ' || x[4] == '-'))
|
(x[4] == ' ' || x[4] == '-'))
|
||||||
{
|
{
|
||||||
if (code)
|
if (code)
|
||||||
skip_input || (len = printf("%s\n", verbose ? x : x+5));
|
PRINTF(len, "%s\n", verbose ? x : x+5);
|
||||||
if (x[4] == ' ')
|
if (x[4] == ' ')
|
||||||
{
|
{
|
||||||
nstate = STATE_PROMPT;
|
nstate = STATE_PROMPT;
|
||||||
|
@ -396,7 +400,7 @@ server_got_reply(char *x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
skip_input || (len = printf("??? <%s>\n", x));
|
PRINTF(len, "??? <%s>\n", x);
|
||||||
|
|
||||||
if (skip_input)
|
if (skip_input)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -23,7 +23,7 @@ m4_define(CF_DECLS, `m4_divert(-1)')
|
||||||
m4_define(CF_DEFINES, `m4_divert(-1)')
|
m4_define(CF_DEFINES, `m4_divert(-1)')
|
||||||
|
|
||||||
# Keywords are translated to C initializers
|
# Keywords are translated to C initializers
|
||||||
m4_define(CF_handle_kw, `m4_divert(1){ "m4_translit($1,[[A-Z]],[[a-z]])", $1 },
|
m4_define(CF_handle_kw, `m4_divert(1){ "m4_translit($1,[[A-Z]],[[a-z]])", $1, NULL },
|
||||||
m4_divert(-1)')
|
m4_divert(-1)')
|
||||||
m4_define(CF_keywd, `m4_ifdef([[CF_tok_$1]],,[[m4_define([[CF_tok_$1]],1)CF_handle_kw($1)]])')
|
m4_define(CF_keywd, `m4_ifdef([[CF_tok_$1]],,[[m4_define([[CF_tok_$1]],1)CF_handle_kw($1)]])')
|
||||||
m4_define(CF_KEYWORDS, `m4_define([[CF_toks]],[[]])CF_iterate([[CF_keywd]], [[$@]])m4_ifelse(CF_toks,,,%token[[]]CF_toks
|
m4_define(CF_KEYWORDS, `m4_define([[CF_toks]],[[]])CF_iterate([[CF_keywd]], [[$@]])m4_ifelse(CF_toks,,,%token[[]]CF_toks
|
||||||
|
@ -34,7 +34,7 @@ m4_define(CF_CLI, `CF_KEYWORDS(m4_translit($1, [[ ]], [[,]]))
|
||||||
')
|
')
|
||||||
|
|
||||||
# Enums are translated to C initializers: use CF_ENUM(typename, prefix, values)
|
# Enums are translated to C initializers: use CF_ENUM(typename, prefix, values)
|
||||||
m4_define(CF_enum, `m4_divert(1){ "CF_enum_prefix[[]]$1", -((CF_enum_type<<16) | CF_enum_prefix[[]]$1) },
|
m4_define(CF_enum, `m4_divert(1){ "CF_enum_prefix[[]]$1", -((CF_enum_type<<16) | CF_enum_prefix[[]]$1), NULL },
|
||||||
m4_divert(-1)')
|
m4_divert(-1)')
|
||||||
m4_define(CF_ENUM, `m4_define([[CF_enum_type]],$1)m4_define([[CF_enum_prefix]],$2)CF_iterate([[CF_enum]], [[m4_shift(m4_shift($@))]])DNL')
|
m4_define(CF_ENUM, `m4_define([[CF_enum_type]],$1)m4_define([[CF_enum_prefix]],$2)CF_iterate([[CF_enum]], [[m4_shift(m4_shift($@))]])DNL')
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ m4_define(CF_ENUM, `m4_define([[CF_enum_type]],$1)m4_define([[CF_enum_prefix]],$
|
||||||
m4_m4wrap(`
|
m4_m4wrap(`
|
||||||
m4_divert(0)
|
m4_divert(0)
|
||||||
static struct keyword keyword_list[] = {
|
static struct keyword keyword_list[] = {
|
||||||
m4_undivert(1){ NULL, -1 } };
|
m4_undivert(1){ NULL, -1, NULL } };
|
||||||
')
|
')
|
||||||
|
|
||||||
# As we are processing C source, we must access all M4 primitives via
|
# As we are processing C source, we must access all M4 primitives via
|
||||||
|
|
20
configure.in
20
configure.in
|
@ -8,7 +8,6 @@ AC_CONFIG_AUX_DIR(tools)
|
||||||
|
|
||||||
AC_ARG_ENABLE(debug,[ --enable-debug enable internal debugging routines (default: disabled)],,enable_debug=no)
|
AC_ARG_ENABLE(debug,[ --enable-debug enable internal debugging routines (default: disabled)],,enable_debug=no)
|
||||||
AC_ARG_ENABLE(memcheck,[ --enable-memcheck check memory allocations when debugging (default: enabled)],,enable_memcheck=yes)
|
AC_ARG_ENABLE(memcheck,[ --enable-memcheck check memory allocations when debugging (default: enabled)],,enable_memcheck=yes)
|
||||||
AC_ARG_ENABLE(warnings,[ --enable-warnings enable extra warnings (default: disabled)],,enable_warnings=no)
|
|
||||||
AC_ARG_ENABLE(client,[ --enable-client enable building of BIRD client (default: enabled)],,enable_client=yes)
|
AC_ARG_ENABLE(client,[ --enable-client enable building of BIRD client (default: enabled)],,enable_client=yes)
|
||||||
AC_ARG_ENABLE(ipv6,[ --enable-ipv6 enable building of IPv6 version (default: disabled)],,enable_ipv6=no)
|
AC_ARG_ENABLE(ipv6,[ --enable-ipv6 enable building of IPv6 version (default: disabled)],,enable_ipv6=no)
|
||||||
AC_ARG_WITH(sysconfig,[ --with-sysconfig=FILE use specified BIRD system configuration file])
|
AC_ARG_WITH(sysconfig,[ --with-sysconfig=FILE use specified BIRD system configuration file])
|
||||||
|
@ -56,23 +55,16 @@ AC_SEARCH_LIBS(clock_gettime,[c rt posix4])
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
AC_CANONICAL_HOST
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([what CFLAGS should we use])
|
||||||
|
if test "$ac_test_CFLAGS" != set ; then
|
||||||
|
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Wno-pointer-sign -Wno-parentheses"
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT($CFLAGS)
|
||||||
|
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
if test -z "$GCC" ; then
|
if test -z "$GCC" ; then
|
||||||
AC_MSG_ERROR([This program requires the GNU C Compiler.])
|
AC_MSG_ERROR([This program requires the GNU C Compiler.])
|
||||||
fi
|
fi
|
||||||
AC_MSG_CHECKING([what CFLAGS should we use])
|
|
||||||
if test "$ac_test_CFLAGS" != set ; then
|
|
||||||
if test "$enable_warnings" = yes ; then
|
|
||||||
WARNS=" -Wmissing-prototypes -Wundef"
|
|
||||||
else
|
|
||||||
WARNS=" -Wno-unused"
|
|
||||||
fi
|
|
||||||
CFLAGS="$CFLAGS -Wall -W -Wstrict-prototypes -Wno-pointer-sign -Wno-parentheses$WARNS"
|
|
||||||
fi
|
|
||||||
if test "$with_sysinclude" != no -a -n "$with_sysinclude"; then
|
|
||||||
CPPFLAGS="$CPPFLAGS -I$with_sysinclude"
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($CFLAGS)
|
|
||||||
|
|
||||||
AC_PROG_CPP
|
AC_PROG_CPP
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
|
|
|
@ -49,7 +49,8 @@ static struct resclass ev_class = {
|
||||||
"Event",
|
"Event",
|
||||||
sizeof(event),
|
sizeof(event),
|
||||||
(void (*)(resource *)) ev_postpone,
|
(void (*)(resource *)) ev_postpone,
|
||||||
ev_dump
|
ev_dump,
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
2
lib/ip.h
2
lib/ip.h
|
@ -46,7 +46,7 @@ char *ip_scope_text(unsigned);
|
||||||
|
|
||||||
struct prefix {
|
struct prefix {
|
||||||
ip_addr addr;
|
ip_addr addr;
|
||||||
int len;
|
unsigned int len;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ip_is_prefix(a,l) (!ipa_nonzero(ipa_and(a, ipa_not(ipa_mkmask(l)))))
|
#define ip_is_prefix(a,l) (!ipa_nonzero(ipa_and(a, ipa_not(ipa_mkmask(l)))))
|
||||||
|
|
|
@ -72,7 +72,7 @@ int ipv4_classify(u32);
|
||||||
u32 ipv4_class_mask(u32);
|
u32 ipv4_class_mask(u32);
|
||||||
byte *ipv4_skip_header(byte *, int *);
|
byte *ipv4_skip_header(byte *, int *);
|
||||||
|
|
||||||
static inline int ipv4_has_link_scope(u32 a)
|
static inline int ipv4_has_link_scope(u32 a UNUSED)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,6 +66,8 @@ int sk_leave_group(sock *s, ip_addr maddr);
|
||||||
int sk_set_ipv6_checksum(sock *s, int offset);
|
int sk_set_ipv6_checksum(sock *s, int offset);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int sk_set_broadcast(sock *s, int enable);
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
sk_send_buffer_empty(sock *sk)
|
sk_send_buffer_empty(sock *sk)
|
||||||
{
|
{
|
||||||
|
|
|
@ -385,7 +385,7 @@ as_path_match(struct adata *path, struct f_path_mask *mask)
|
||||||
struct pm_pos pos[2048 + 1];
|
struct pm_pos pos[2048 + 1];
|
||||||
int plen = parse_path(path, pos);
|
int plen = parse_path(path, pos);
|
||||||
int l, h, i, nh, nl;
|
int l, h, i, nh, nl;
|
||||||
u32 val;
|
u32 val = 0;
|
||||||
|
|
||||||
/* l and h are bound of interval of positions where
|
/* l and h are bound of interval of positions where
|
||||||
are marked states */
|
are marked states */
|
||||||
|
@ -417,7 +417,7 @@ as_path_match(struct adata *path, struct f_path_mask *mask)
|
||||||
goto step;
|
goto step;
|
||||||
case PM_QUESTION:
|
case PM_QUESTION:
|
||||||
step:
|
step:
|
||||||
nh = -1;
|
nh = nl = -1;
|
||||||
for (i = h; i >= l; i--)
|
for (i = h; i >= l; i--)
|
||||||
if (pos[i].mark)
|
if (pos[i].mark)
|
||||||
{
|
{
|
||||||
|
|
|
@ -357,8 +357,8 @@ cli_echo(unsigned int class, byte *msg)
|
||||||
free = (c->ring_end - c->ring_buf) - (c->ring_write - c->ring_read + 1);
|
free = (c->ring_end - c->ring_buf) - (c->ring_write - c->ring_read + 1);
|
||||||
else
|
else
|
||||||
free = c->ring_read - c->ring_write - 1;
|
free = c->ring_read - c->ring_write - 1;
|
||||||
if (len > free ||
|
if ((len > free) ||
|
||||||
free < c->log_threshold && class < (unsigned) L_INFO[0])
|
(free < c->log_threshold && class < (unsigned) L_INFO[0]))
|
||||||
{
|
{
|
||||||
c->ring_overflow++;
|
c->ring_overflow++;
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -97,7 +97,8 @@ static struct resclass olock_class = {
|
||||||
"ObjLock",
|
"ObjLock",
|
||||||
sizeof(struct object_lock),
|
sizeof(struct object_lock),
|
||||||
olock_free,
|
olock_free,
|
||||||
olock_dump
|
olock_dump,
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,7 +51,7 @@ proto_enqueue(list *l, struct proto *p)
|
||||||
static void
|
static void
|
||||||
proto_relink(struct proto *p)
|
proto_relink(struct proto *p)
|
||||||
{
|
{
|
||||||
list *l;
|
list *l = NULL;
|
||||||
|
|
||||||
if (p->debug & D_STATES)
|
if (p->debug & D_STATES)
|
||||||
{
|
{
|
||||||
|
|
|
@ -158,7 +158,7 @@ rte_trace_out(unsigned int flag, struct proto *p, rte *e, char *msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
do_rte_announce(struct announce_hook *a, int type, net *net, rte *new, rte *old, ea_list *tmpa, int class, int refeed)
|
do_rte_announce(struct announce_hook *a, int type UNUSED, net *net, rte *new, rte *old, ea_list *tmpa, int class, int refeed)
|
||||||
{
|
{
|
||||||
struct proto *p = a->proto;
|
struct proto *p = a->proto;
|
||||||
struct filter *filter = p->out_filter;
|
struct filter *filter = p->out_filter;
|
||||||
|
@ -196,8 +196,8 @@ do_rte_announce(struct announce_hook *a, int type, net *net, rte *new, rte *old,
|
||||||
}
|
}
|
||||||
else if (ok)
|
else if (ok)
|
||||||
rte_trace_out(D_FILTERS, p, new, "forced accept by protocol");
|
rte_trace_out(D_FILTERS, p, new, "forced accept by protocol");
|
||||||
else if (filter == FILTER_REJECT ||
|
else if ((filter == FILTER_REJECT) ||
|
||||||
filter && f_run(filter, &new, &tmpa, rte_update_pool, FF_FORCE_TMPATTR) > F_ACCEPT)
|
(filter && f_run(filter, &new, &tmpa, rte_update_pool, FF_FORCE_TMPATTR) > F_ACCEPT))
|
||||||
{
|
{
|
||||||
stats->exp_updates_filtered++;
|
stats->exp_updates_filtered++;
|
||||||
drop_reason = "filtered out";
|
drop_reason = "filtered out";
|
||||||
|
@ -329,7 +329,7 @@ do_rte_announce(struct announce_hook *a, int type, net *net, rte *new, rte *old,
|
||||||
* the protocol gets called.
|
* the protocol gets called.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
rte_announce(rtable *tab, int type, net *net, rte *new, rte *old, ea_list *tmpa)
|
rte_announce(rtable *tab, unsigned type, net *net, rte *new, rte *old, ea_list *tmpa)
|
||||||
{
|
{
|
||||||
struct announce_hook *a;
|
struct announce_hook *a;
|
||||||
int class = ipa_classify(net->n.prefix);
|
int class = ipa_classify(net->n.prefix);
|
||||||
|
@ -1203,8 +1203,8 @@ rt_show_net(struct cli *c, net *n, struct rt_show_data *d)
|
||||||
'configure soft' command may change the export filter
|
'configure soft' command may change the export filter
|
||||||
and do not update routes */
|
and do not update routes */
|
||||||
|
|
||||||
if (p1->out_filter == FILTER_REJECT ||
|
if ((p1->out_filter == FILTER_REJECT) ||
|
||||||
p1->out_filter && f_run(p1->out_filter, &e, &tmpa, rte_update_pool, FF_FORCE_TMPATTR) > F_ACCEPT)
|
(p1->out_filter && f_run(p1->out_filter, &e, &tmpa, rte_update_pool, FF_FORCE_TMPATTR) > F_ACCEPT))
|
||||||
ok = 0;
|
ok = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ bgp_check_origin(struct bgp_proto *p UNUSED, byte *a, int len UNUSED)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bgp_format_origin(eattr *a, byte *buf, int buflen)
|
bgp_format_origin(eattr *a, byte *buf, int buflen UNUSED)
|
||||||
{
|
{
|
||||||
static char *bgp_origin_names[] = { "IGP", "EGP", "Incomplete" };
|
static char *bgp_origin_names[] = { "IGP", "EGP", "Incomplete" };
|
||||||
|
|
||||||
|
@ -257,14 +257,14 @@ static struct attr_desc bgp_attr_table[] = {
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ "cluster_list", -1, BAF_OPTIONAL, EAF_TYPE_INT_SET, 0, /* BA_CLUSTER_LIST */
|
{ "cluster_list", -1, BAF_OPTIONAL, EAF_TYPE_INT_SET, 0, /* BA_CLUSTER_LIST */
|
||||||
bgp_check_cluster_list, bgp_format_cluster_list },
|
bgp_check_cluster_list, bgp_format_cluster_list },
|
||||||
{ NULL, }, /* BA_DPA */
|
{ .name = NULL }, /* BA_DPA */
|
||||||
{ NULL, }, /* BA_ADVERTISER */
|
{ .name = NULL }, /* BA_ADVERTISER */
|
||||||
{ NULL, }, /* BA_RCID_PATH */
|
{ .name = NULL }, /* BA_RCID_PATH */
|
||||||
{ "mp_reach_nlri", -1, BAF_OPTIONAL, EAF_TYPE_OPAQUE, 1, /* BA_MP_REACH_NLRI */
|
{ "mp_reach_nlri", -1, BAF_OPTIONAL, EAF_TYPE_OPAQUE, 1, /* BA_MP_REACH_NLRI */
|
||||||
bgp_check_reach_nlri, NULL },
|
bgp_check_reach_nlri, NULL },
|
||||||
{ "mp_unreach_nlri", -1, BAF_OPTIONAL, EAF_TYPE_OPAQUE, 1, /* BA_MP_UNREACH_NLRI */
|
{ "mp_unreach_nlri", -1, BAF_OPTIONAL, EAF_TYPE_OPAQUE, 1, /* BA_MP_UNREACH_NLRI */
|
||||||
bgp_check_unreach_nlri, NULL },
|
bgp_check_unreach_nlri, NULL },
|
||||||
{ NULL, }, /* BA_EXTENDED_COMM */
|
{ .name = NULL }, /* BA_EXTENDED_COMM */
|
||||||
{ "as4_path", -1, BAF_OPTIONAL | BAF_TRANSITIVE, EAF_TYPE_OPAQUE, 1, /* BA_AS4_PATH */
|
{ "as4_path", -1, BAF_OPTIONAL | BAF_TRANSITIVE, EAF_TYPE_OPAQUE, 1, /* BA_AS4_PATH */
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ "as4_aggregator", -1, BAF_OPTIONAL | BAF_TRANSITIVE, EAF_TYPE_OPAQUE, 1, /* BA_AS4_PATH */
|
{ "as4_aggregator", -1, BAF_OPTIONAL | BAF_TRANSITIVE, EAF_TYPE_OPAQUE, 1, /* BA_AS4_PATH */
|
||||||
|
|
|
@ -203,7 +203,7 @@ bgp_start_timer(timer *t, int value)
|
||||||
void
|
void
|
||||||
bgp_close_conn(struct bgp_conn *conn)
|
bgp_close_conn(struct bgp_conn *conn)
|
||||||
{
|
{
|
||||||
struct bgp_proto *p = conn->bgp;
|
// struct bgp_proto *p = conn->bgp;
|
||||||
|
|
||||||
DBG("BGP: Closing connection\n");
|
DBG("BGP: Closing connection\n");
|
||||||
conn->packets_to_send = 0;
|
conn->packets_to_send = 0;
|
||||||
|
@ -237,7 +237,7 @@ bgp_update_startup_delay(struct bgp_proto *p)
|
||||||
|
|
||||||
DBG("BGP: Updating startup delay\n");
|
DBG("BGP: Updating startup delay\n");
|
||||||
|
|
||||||
if (p->last_proto_error && ((now - p->last_proto_error) >= cf->error_amnesia_time))
|
if (p->last_proto_error && ((now - p->last_proto_error) >= (int) cf->error_amnesia_time))
|
||||||
p->startup_delay = 0;
|
p->startup_delay = 0;
|
||||||
|
|
||||||
p->last_proto_error = now;
|
p->last_proto_error = now;
|
||||||
|
@ -492,7 +492,7 @@ bgp_setup_conn(struct bgp_proto *p, struct bgp_conn *conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bgp_setup_sk(struct bgp_proto *p, struct bgp_conn *conn, sock *s)
|
bgp_setup_sk(struct bgp_conn *conn, sock *s)
|
||||||
{
|
{
|
||||||
s->data = conn;
|
s->data = conn;
|
||||||
s->err_hook = bgp_sock_err;
|
s->err_hook = bgp_sock_err;
|
||||||
|
@ -555,7 +555,7 @@ bgp_connect(struct bgp_proto *p) /* Enter Connect state and start establishing c
|
||||||
s->tx_hook = bgp_connected;
|
s->tx_hook = bgp_connected;
|
||||||
BGP_TRACE(D_EVENTS, "Connecting to %I from local address %I", s->daddr, s->saddr);
|
BGP_TRACE(D_EVENTS, "Connecting to %I from local address %I", s->daddr, s->saddr);
|
||||||
bgp_setup_conn(p, conn);
|
bgp_setup_conn(p, conn);
|
||||||
bgp_setup_sk(p, conn, s);
|
bgp_setup_sk(conn, s);
|
||||||
bgp_conn_set_state(conn, BS_CONNECT);
|
bgp_conn_set_state(conn, BS_CONNECT);
|
||||||
if (sk_open(s))
|
if (sk_open(s))
|
||||||
{
|
{
|
||||||
|
@ -601,7 +601,7 @@ bgp_incoming_connection(sock *sk, int dummy UNUSED)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
bgp_setup_conn(p, &p->incoming_conn);
|
bgp_setup_conn(p, &p->incoming_conn);
|
||||||
bgp_setup_sk(p, &p->incoming_conn, sk);
|
bgp_setup_sk(&p->incoming_conn, sk);
|
||||||
sk_set_ttl(sk, p->cf->multihop ? : 1);
|
sk_set_ttl(sk, p->cf->multihop ? : 1);
|
||||||
bgp_send_open(&p->incoming_conn);
|
bgp_send_open(&p->incoming_conn);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -615,7 +615,7 @@ bgp_incoming_connection(sock *sk, int dummy UNUSED)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
bgp_listen_sock_err(sock *sk, int err)
|
bgp_listen_sock_err(sock *sk UNUSED, int err)
|
||||||
{
|
{
|
||||||
if (err == ECONNABORTED)
|
if (err == ECONNABORTED)
|
||||||
log(L_WARN "BGP: Incoming connection aborted");
|
log(L_WARN "BGP: Incoming connection aborted");
|
||||||
|
|
|
@ -44,7 +44,6 @@ static byte *
|
||||||
mrt_put_bgp4_hdr(byte *buf, struct bgp_conn *conn, int as4)
|
mrt_put_bgp4_hdr(byte *buf, struct bgp_conn *conn, int as4)
|
||||||
{
|
{
|
||||||
struct bgp_proto *p = conn->bgp;
|
struct bgp_proto *p = conn->bgp;
|
||||||
ip_addr local_addr;
|
|
||||||
|
|
||||||
if (as4)
|
if (as4)
|
||||||
{
|
{
|
||||||
|
@ -614,7 +613,7 @@ bgp_tx(sock *sk)
|
||||||
void
|
void
|
||||||
bgp_parse_capabilities(struct bgp_conn *conn, byte *opt, int len)
|
bgp_parse_capabilities(struct bgp_conn *conn, byte *opt, int len)
|
||||||
{
|
{
|
||||||
struct bgp_proto *p = conn->bgp;
|
// struct bgp_proto *p = conn->bgp;
|
||||||
int cl;
|
int cl;
|
||||||
|
|
||||||
while (len > 0)
|
while (len > 0)
|
||||||
|
|
|
@ -48,8 +48,8 @@ ospf_hello_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
|
||||||
struct proto_ospf *po = ifa->oa->po;
|
struct proto_ospf *po = ifa->oa->po;
|
||||||
struct proto *p = &po->proto;
|
struct proto *p = &po->proto;
|
||||||
char *beg = "Bad OSPF HELLO packet from ", *rec = " received: ";
|
char *beg = "Bad OSPF HELLO packet from ", *rec = " received: ";
|
||||||
unsigned int size, i, twoway, oldpriority, eligible, peers;
|
unsigned int size, i, twoway, eligible, peers;
|
||||||
u32 olddr, oldbdr, oldiface_id, tmp;
|
u32 tmp;
|
||||||
u32 *pnrid;
|
u32 *pnrid;
|
||||||
|
|
||||||
size = ntohs(ps_i->length);
|
size = ntohs(ps_i->length);
|
||||||
|
@ -188,11 +188,11 @@ ospf_hello_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
|
||||||
if (!twoway)
|
if (!twoway)
|
||||||
ospf_neigh_sm(n, INM_1WAYREC);
|
ospf_neigh_sm(n, INM_1WAYREC);
|
||||||
|
|
||||||
olddr = n->dr;
|
u32 olddr = n->dr;
|
||||||
oldbdr = n->bdr;
|
u32 oldbdr = n->bdr;
|
||||||
oldpriority = n->priority;
|
u32 oldpriority = n->priority;
|
||||||
#ifdef OSPFv3
|
#ifdef OSPFv3
|
||||||
oldiface_id = n->iface_id;
|
u32 oldiface_id = n->iface_id;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
n->dr = ntohl(ps->dr);
|
n->dr = ntohl(ps->dr);
|
||||||
|
|
|
@ -122,22 +122,22 @@ ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
htonlsab(void *h, void *n, u16 type, u16 len)
|
htonlsab(void *h, void *n, u16 len)
|
||||||
{
|
{
|
||||||
u32 *hid = h;
|
u32 *hid = h;
|
||||||
u32 *nid = n;
|
u32 *nid = n;
|
||||||
int i;
|
unsigned i;
|
||||||
|
|
||||||
for (i = 0; i < (len / sizeof(u32)); i++)
|
for (i = 0; i < (len / sizeof(u32)); i++)
|
||||||
nid[i] = htonl(hid[i]);
|
nid[i] = htonl(hid[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ntohlsab(void *n, void *h, u16 type, u16 len)
|
ntohlsab(void *n, void *h, u16 len)
|
||||||
{
|
{
|
||||||
u32 *nid = n;
|
u32 *nid = n;
|
||||||
u32 *hid = h;
|
u32 *hid = h;
|
||||||
int i;
|
unsigned i;
|
||||||
|
|
||||||
for (i = 0; i < (len / sizeof(u32)); i++)
|
for (i = 0; i < (len / sizeof(u32)); i++)
|
||||||
hid[i] = ntohl(nid[i]);
|
hid[i] = ntohl(nid[i]);
|
||||||
|
@ -185,11 +185,10 @@ void
|
||||||
lsasum_calculate(struct ospf_lsa_header *h, void *body)
|
lsasum_calculate(struct ospf_lsa_header *h, void *body)
|
||||||
{
|
{
|
||||||
u16 length = h->length;
|
u16 length = h->length;
|
||||||
u16 type = h->type;
|
|
||||||
|
|
||||||
// log(L_WARN "Checksum %R %R %d start (len %d)", h->id, h->rt, h->type, length);
|
// log(L_WARN "Checksum %R %R %d start (len %d)", h->id, h->rt, h->type, length);
|
||||||
htonlsah(h, h);
|
htonlsah(h, h);
|
||||||
htonlsab(body, body, type, length - sizeof(struct ospf_lsa_header));
|
htonlsab(body, body, length - sizeof(struct ospf_lsa_header));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
|
@ -203,7 +202,7 @@ lsasum_calculate(struct ospf_lsa_header *h, void *body)
|
||||||
// log(L_WARN "Checksum result %4x", h->checksum);
|
// log(L_WARN "Checksum result %4x", h->checksum);
|
||||||
|
|
||||||
ntohlsah(h, h);
|
ntohlsah(h, h);
|
||||||
ntohlsab(body, body, type, length - sizeof(struct ospf_lsa_header));
|
ntohlsab(body, body, length - sizeof(struct ospf_lsa_header));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -325,7 +324,7 @@ lsa_validate_rt(struct ospf_lsa_header *lsa, struct ospf_lsa_rt *body)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
lsa_validate_net(struct ospf_lsa_header *lsa, struct ospf_lsa_net *body)
|
lsa_validate_net(struct ospf_lsa_header *lsa, struct ospf_lsa_net *body UNUSED)
|
||||||
{
|
{
|
||||||
if (lsa->length < (HDRLEN + sizeof(struct ospf_lsa_net)))
|
if (lsa->length < (HDRLEN + sizeof(struct ospf_lsa_net)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
|
|
||||||
void htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n);
|
void htonlsah(struct ospf_lsa_header *h, struct ospf_lsa_header *n);
|
||||||
void ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h);
|
void ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h);
|
||||||
void htonlsab(void *h, void *n, u16 type, u16 len);
|
void htonlsab(void *h, void *n, u16 len);
|
||||||
void ntohlsab(void *n, void *h, u16 type, u16 len);
|
void ntohlsab(void *n, void *h, u16 len);
|
||||||
void lsasum_calculate(struct ospf_lsa_header *header, void *body);
|
void lsasum_calculate(struct ospf_lsa_header *header, void *body);
|
||||||
u16 lsasum_check(struct ospf_lsa_header *h, void *body);
|
u16 lsasum_check(struct ospf_lsa_header *h, void *body);
|
||||||
#define CMP_NEWER 1
|
#define CMP_NEWER 1
|
||||||
|
|
|
@ -290,8 +290,7 @@ ospf_lsupd_flood(struct proto_ospf *po,
|
||||||
htonlsah(hh, lh);
|
htonlsah(hh, lh);
|
||||||
help = (u8 *) (lh + 1);
|
help = (u8 *) (lh + 1);
|
||||||
en = ospf_hash_find_header(po->gr, domain, hh);
|
en = ospf_hash_find_header(po->gr, domain, hh);
|
||||||
htonlsab(en->lsa_body, help, hh->type, hh->length
|
htonlsab(en->lsa_body, help, hh->length - sizeof(struct ospf_lsa_header));
|
||||||
- sizeof(struct ospf_lsa_header));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
len = sizeof(struct ospf_lsupd_packet) + ntohs(lh->length);
|
len = sizeof(struct ospf_lsupd_packet) + ntohs(lh->length);
|
||||||
|
@ -386,8 +385,7 @@ ospf_lsupd_send_list(struct ospf_neighbor *n, list * l)
|
||||||
}
|
}
|
||||||
htonlsah(&(en->lsa), pktpos);
|
htonlsah(&(en->lsa), pktpos);
|
||||||
pktpos = pktpos + sizeof(struct ospf_lsa_header);
|
pktpos = pktpos + sizeof(struct ospf_lsa_header);
|
||||||
htonlsab(en->lsa_body, pktpos, en->lsa.type, en->lsa.length
|
htonlsab(en->lsa_body, pktpos, en->lsa.length - sizeof(struct ospf_lsa_header));
|
||||||
- sizeof(struct ospf_lsa_header));
|
|
||||||
pktpos = pktpos + en->lsa.length - sizeof(struct ospf_lsa_header);
|
pktpos = pktpos + en->lsa.length - sizeof(struct ospf_lsa_header);
|
||||||
len += en->lsa.length;
|
len += en->lsa.length;
|
||||||
lsano++;
|
lsano++;
|
||||||
|
@ -630,8 +628,7 @@ ospf_lsupd_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
|
||||||
|
|
||||||
/* pg 144 (5d) */
|
/* pg 144 (5d) */
|
||||||
void *body = mb_alloc(p->pool, lsatmp.length - sizeof(struct ospf_lsa_header));
|
void *body = mb_alloc(p->pool, lsatmp.length - sizeof(struct ospf_lsa_header));
|
||||||
ntohlsab(lsa + 1, body, lsatmp.type,
|
ntohlsab(lsa + 1, body, lsatmp.length - sizeof(struct ospf_lsa_header));
|
||||||
lsatmp.length - sizeof(struct ospf_lsa_header));
|
|
||||||
|
|
||||||
/* We will do validation check after flooding and
|
/* We will do validation check after flooding and
|
||||||
acknowledging given LSA to minimize problems
|
acknowledging given LSA to minimize problems
|
||||||
|
|
|
@ -440,7 +440,6 @@ void
|
||||||
bdr_election(struct ospf_iface *ifa)
|
bdr_election(struct ospf_iface *ifa)
|
||||||
{
|
{
|
||||||
struct proto_ospf *po = ifa->oa->po;
|
struct proto_ospf *po = ifa->oa->po;
|
||||||
struct proto *p = &po->proto;
|
|
||||||
u32 myid = po->router_id;
|
u32 myid = po->router_id;
|
||||||
struct ospf_neighbor *neigh, *ndr, *nbdr, me;
|
struct ospf_neighbor *neigh, *ndr, *nbdr, me;
|
||||||
int doadj;
|
int doadj;
|
||||||
|
@ -632,7 +631,7 @@ static void
|
||||||
rxmt_timer_hook(timer * timer)
|
rxmt_timer_hook(timer * timer)
|
||||||
{
|
{
|
||||||
struct ospf_neighbor *n = (struct ospf_neighbor *) timer->data;
|
struct ospf_neighbor *n = (struct ospf_neighbor *) timer->data;
|
||||||
struct proto *p = &n->ifa->oa->po->proto;
|
// struct proto *p = &n->ifa->oa->po->proto;
|
||||||
struct top_hash_entry *en;
|
struct top_hash_entry *en;
|
||||||
|
|
||||||
DBG("%s: RXMT timer fired on interface %s for neigh: %I.\n",
|
DBG("%s: RXMT timer fired on interface %s for neigh: %I.\n",
|
||||||
|
|
|
@ -224,9 +224,11 @@ ospf_dump(struct proto *p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
OSPF_TRACE(D_EVENTS, "LSA graph dump start:");
|
OSPF_TRACE(D_EVENTS, "LSA graph dump start:");
|
||||||
ospf_top_dump(po->gr, p);
|
ospf_top_dump(po->gr, p);
|
||||||
OSPF_TRACE(D_EVENTS, "LSA graph dump finished");
|
OSPF_TRACE(D_EVENTS, "LSA graph dump finished");
|
||||||
|
*/
|
||||||
neigh_dump_all();
|
neigh_dump_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -500,7 +502,7 @@ ospf_rt_notify(struct proto *p, rtable *tbl UNUSED, net * n, rte * new, rte * ol
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ospf_ifa_notify(struct proto *p, unsigned flags, struct ifa *a)
|
ospf_ifa_notify(struct proto *p, unsigned flags UNUSED, struct ifa *a)
|
||||||
{
|
{
|
||||||
struct proto_ospf *po = (struct proto_ospf *) p;
|
struct proto_ospf *po = (struct proto_ospf *) p;
|
||||||
struct ospf_iface *ifa;
|
struct ospf_iface *ifa;
|
||||||
|
@ -915,7 +917,7 @@ ospf_reconfigure(struct proto *p, struct proto_config *c)
|
||||||
void
|
void
|
||||||
ospf_sh_neigh(struct proto *p, char *iff)
|
ospf_sh_neigh(struct proto *p, char *iff)
|
||||||
{
|
{
|
||||||
struct ospf_iface *ifa = NULL, *f;
|
struct ospf_iface *ifa = NULL;
|
||||||
struct ospf_neighbor *n;
|
struct ospf_neighbor *n;
|
||||||
struct proto_ospf *po = (struct proto_ospf *) p;
|
struct proto_ospf *po = (struct proto_ospf *) p;
|
||||||
|
|
||||||
|
@ -1006,7 +1008,7 @@ void
|
||||||
ospf_sh_iface(struct proto *p, char *iff)
|
ospf_sh_iface(struct proto *p, char *iff)
|
||||||
{
|
{
|
||||||
struct proto_ospf *po = (struct proto_ospf *) p;
|
struct proto_ospf *po = (struct proto_ospf *) p;
|
||||||
struct ospf_iface *ifa = NULL, *f;
|
struct ospf_iface *ifa = NULL;
|
||||||
|
|
||||||
if (p->proto_state != PS_UP)
|
if (p->proto_state != PS_UP)
|
||||||
{
|
{
|
||||||
|
@ -1193,7 +1195,6 @@ show_lsa_network(struct top_hash_entry *he)
|
||||||
static inline void
|
static inline void
|
||||||
show_lsa_sum_net(struct top_hash_entry *he)
|
show_lsa_sum_net(struct top_hash_entry *he)
|
||||||
{
|
{
|
||||||
struct ospf_lsa_header *lsa = &(he->lsa);
|
|
||||||
ip_addr ip;
|
ip_addr ip;
|
||||||
int pxlen;
|
int pxlen;
|
||||||
|
|
||||||
|
@ -1217,7 +1218,7 @@ show_lsa_sum_rt(struct top_hash_entry *he)
|
||||||
u32 dst_rid, options;
|
u32 dst_rid, options;
|
||||||
|
|
||||||
#ifdef OSPFv2
|
#ifdef OSPFv2
|
||||||
struct ospf_lsa_sum *ls = he->lsa_body;
|
// struct ospf_lsa_sum *ls = he->lsa_body;
|
||||||
dst_rid = he->lsa.id;
|
dst_rid = he->lsa.id;
|
||||||
options = 0;
|
options = 0;
|
||||||
#else /* OSPFv3 */
|
#else /* OSPFv3 */
|
||||||
|
@ -1235,7 +1236,6 @@ show_lsa_external(struct top_hash_entry *he)
|
||||||
{
|
{
|
||||||
struct ospf_lsa_header *lsa = &(he->lsa);
|
struct ospf_lsa_header *lsa = &(he->lsa);
|
||||||
struct ospf_lsa_ext *ext = he->lsa_body;
|
struct ospf_lsa_ext *ext = he->lsa_body;
|
||||||
struct ospf_lsa_ext_tos *et = (struct ospf_lsa_ext_tos *) (ext + 1);
|
|
||||||
char str_via[STD_ADDRESS_P_LENGTH + 8] = "";
|
char str_via[STD_ADDRESS_P_LENGTH + 8] = "";
|
||||||
char str_tag[16] = "";
|
char str_tag[16] = "";
|
||||||
ip_addr ip, rt_fwaddr;
|
ip_addr ip, rt_fwaddr;
|
||||||
|
@ -1493,8 +1493,6 @@ ospf_sh_lsadb(struct proto *p)
|
||||||
|
|
||||||
if ((dscope != last_dscope) || (hea[i]->domain != last_domain))
|
if ((dscope != last_dscope) || (hea[i]->domain != last_domain))
|
||||||
{
|
{
|
||||||
struct iface *ifa;
|
|
||||||
|
|
||||||
cli_msg(-1017, "");
|
cli_msg(-1017, "");
|
||||||
switch (dscope)
|
switch (dscope)
|
||||||
{
|
{
|
||||||
|
@ -1506,7 +1504,7 @@ ospf_sh_lsadb(struct proto *p)
|
||||||
break;
|
break;
|
||||||
#ifdef OSPFv3
|
#ifdef OSPFv3
|
||||||
case LSA_SCOPE_LINK:
|
case LSA_SCOPE_LINK:
|
||||||
ifa = if_find_by_index(hea[i]->domain);
|
struct iface *ifa = if_find_by_index(hea[i]->domain);
|
||||||
cli_msg(-1017, "Link %s", (ifa != NULL) ? ifa->name : "?");
|
cli_msg(-1017, "Link %s", (ifa != NULL) ? ifa->name : "?");
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -704,7 +704,7 @@ struct ospf_area
|
||||||
struct top_hash_entry *pxr_lsa; /* Originated prefix LSA */
|
struct top_hash_entry *pxr_lsa; /* Originated prefix LSA */
|
||||||
list cand; /* List of candidates for RT calc. */
|
list cand; /* List of candidates for RT calc. */
|
||||||
struct fib net_fib; /* Networks to advertise or not */
|
struct fib net_fib; /* Networks to advertise or not */
|
||||||
int stub;
|
unsigned stub;
|
||||||
int trcap; /* Transit capability? */
|
int trcap; /* Transit capability? */
|
||||||
u32 options; /* Optional features */
|
u32 options; /* Optional features */
|
||||||
struct proto_ospf *po;
|
struct proto_ospf *po;
|
||||||
|
@ -781,13 +781,14 @@ void schedule_net_lsa(struct ospf_iface *ifa);
|
||||||
#ifdef OSPFv3
|
#ifdef OSPFv3
|
||||||
void schedule_link_lsa(struct ospf_iface *ifa);
|
void schedule_link_lsa(struct ospf_iface *ifa);
|
||||||
#else
|
#else
|
||||||
static inline void schedule_link_lsa(struct ospf_iface *ifa) {}
|
static inline void schedule_link_lsa(struct ospf_iface *ifa UNUSED) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ospf_sh_neigh(struct proto *p, char *iff);
|
void ospf_sh_neigh(struct proto *p, char *iff);
|
||||||
void ospf_sh(struct proto *p);
|
void ospf_sh(struct proto *p);
|
||||||
void ospf_sh_iface(struct proto *p, char *iff);
|
void ospf_sh_iface(struct proto *p, char *iff);
|
||||||
void ospf_sh_state(struct proto *p, int verbose);
|
void ospf_sh_state(struct proto *p, int verbose);
|
||||||
|
void ospf_sh_lsadb(struct proto *p);
|
||||||
|
|
||||||
|
|
||||||
#define EA_OSPF_METRIC1 EA_CODE(EAP_OSPF, 0)
|
#define EA_OSPF_METRIC1 EA_CODE(EAP_OSPF, 0)
|
||||||
|
|
|
@ -14,7 +14,6 @@ void
|
||||||
ospf_pkt_fill_hdr(struct ospf_iface *ifa, void *buf, u8 h_type)
|
ospf_pkt_fill_hdr(struct ospf_iface *ifa, void *buf, u8 h_type)
|
||||||
{
|
{
|
||||||
struct proto_ospf *po = ifa->oa->po;
|
struct proto_ospf *po = ifa->oa->po;
|
||||||
struct proto *p = &po->proto;
|
|
||||||
struct ospf_packet *pkt;
|
struct ospf_packet *pkt;
|
||||||
|
|
||||||
pkt = (struct ospf_packet *) buf;
|
pkt = (struct ospf_packet *) buf;
|
||||||
|
|
|
@ -226,7 +226,7 @@ process_prefixes(struct ospf_area *oa)
|
||||||
static void
|
static void
|
||||||
ospf_rt_spfa_rtlinks(struct ospf_area *oa, struct top_hash_entry *act, struct top_hash_entry *en)
|
ospf_rt_spfa_rtlinks(struct ospf_area *oa, struct top_hash_entry *act, struct top_hash_entry *en)
|
||||||
{
|
{
|
||||||
struct proto *p = &oa->po->proto;
|
// struct proto *p = &oa->po->proto;
|
||||||
struct proto_ospf *po = oa->po;
|
struct proto_ospf *po = oa->po;
|
||||||
orta nf;
|
orta nf;
|
||||||
u32 i;
|
u32 i;
|
||||||
|
@ -519,7 +519,7 @@ link_back(struct ospf_area *oa, struct top_hash_entry *en, struct top_hash_entry
|
||||||
static void
|
static void
|
||||||
ospf_rt_sum_tr(struct ospf_area *oa)
|
ospf_rt_sum_tr(struct ospf_area *oa)
|
||||||
{
|
{
|
||||||
struct proto *p = &oa->po->proto;
|
// struct proto *p = &oa->po->proto;
|
||||||
struct proto_ospf *po = oa->po;
|
struct proto_ospf *po = oa->po;
|
||||||
struct ospf_area *bb = po->backbone;
|
struct ospf_area *bb = po->backbone;
|
||||||
ip_addr ip, abrip;
|
ip_addr ip, abrip;
|
||||||
|
@ -1077,8 +1077,8 @@ static int
|
||||||
calc_next_hop(struct ospf_area *oa, struct top_hash_entry *en,
|
calc_next_hop(struct ospf_area *oa, struct top_hash_entry *en,
|
||||||
struct top_hash_entry *par)
|
struct top_hash_entry *par)
|
||||||
{
|
{
|
||||||
|
// struct proto *p = &oa->po->proto;
|
||||||
struct ospf_neighbor *neigh;
|
struct ospf_neighbor *neigh;
|
||||||
struct proto *p = &oa->po->proto;
|
|
||||||
struct proto_ospf *po = oa->po;
|
struct proto_ospf *po = oa->po;
|
||||||
struct ospf_iface *ifa;
|
struct ospf_iface *ifa;
|
||||||
|
|
||||||
|
|
|
@ -744,7 +744,7 @@ originate_sum_net_lsa(struct ospf_area *oa, struct fib_node *fn, int metric)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
originate_sum_rt_lsa(struct ospf_area *oa, struct fib_node *fn, int metric, u32 options)
|
originate_sum_rt_lsa(struct ospf_area *oa, struct fib_node *fn, int metric, u32 options UNUSED)
|
||||||
{
|
{
|
||||||
struct proto_ospf *po = oa->po;
|
struct proto_ospf *po = oa->po;
|
||||||
struct proto *p = &po->proto;
|
struct proto *p = &po->proto;
|
||||||
|
@ -899,7 +899,6 @@ originate_ext_lsa_body(net *n, rte *e, u16 *length, struct proto_ospf *po,
|
||||||
u32 tag = ea_get_int(attrs, EA_OSPF_TAG, 0);
|
u32 tag = ea_get_int(attrs, EA_OSPF_TAG, 0);
|
||||||
int gw = 0;
|
int gw = 0;
|
||||||
int size = sizeof(struct ospf_lsa_ext);
|
int size = sizeof(struct ospf_lsa_ext);
|
||||||
u32 *buf;
|
|
||||||
|
|
||||||
if ((e->attrs->dest == RTD_ROUTER) &&
|
if ((e->attrs->dest == RTD_ROUTER) &&
|
||||||
!ipa_equal(e->attrs->gw, IPA_NONE) &&
|
!ipa_equal(e->attrs->gw, IPA_NONE) &&
|
||||||
|
@ -927,7 +926,7 @@ originate_ext_lsa_body(net *n, rte *e, u16 *length, struct proto_ospf *po,
|
||||||
ext->fwaddr = gw ? e->attrs->gw : IPA_NONE;
|
ext->fwaddr = gw ? e->attrs->gw : IPA_NONE;
|
||||||
ext->tag = tag;
|
ext->tag = tag;
|
||||||
#else /* OSPFv3 */
|
#else /* OSPFv3 */
|
||||||
buf = ext->rest;
|
u32 *buf = ext->rest;
|
||||||
buf = put_ipv6_prefix(buf, n->n.prefix, n->n.pxlen, 0, 0);
|
buf = put_ipv6_prefix(buf, n->n.prefix, n->n.pxlen, 0, 0);
|
||||||
|
|
||||||
if (gw)
|
if (gw)
|
||||||
|
@ -1017,7 +1016,6 @@ flush_ext_lsa(net *n, struct proto_ospf *po)
|
||||||
{
|
{
|
||||||
struct proto *p = &po->proto;
|
struct proto *p = &po->proto;
|
||||||
struct fib_node *fn = &n->n;
|
struct fib_node *fn = &n->n;
|
||||||
struct ospf_area *oa;
|
|
||||||
struct top_hash_entry *en;
|
struct top_hash_entry *en;
|
||||||
|
|
||||||
OSPF_TRACE(D_EVENTS, "Flushing AS-external-LSA for %I/%d",
|
OSPF_TRACE(D_EVENTS, "Flushing AS-external-LSA for %I/%d",
|
||||||
|
@ -1651,10 +1649,11 @@ ospf_hash_delete(struct top_graph *f, struct top_hash_entry *e)
|
||||||
bug("ospf_hash_delete() called for invalid node");
|
bug("ospf_hash_delete() called for invalid node");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
static void
|
static void
|
||||||
ospf_dump_lsa(struct top_hash_entry *he, struct proto *p)
|
ospf_dump_lsa(struct top_hash_entry *he, struct proto *p)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
struct ospf_lsa_rt *rt = NULL;
|
struct ospf_lsa_rt *rt = NULL;
|
||||||
struct ospf_lsa_rt_link *rr = NULL;
|
struct ospf_lsa_rt_link *rr = NULL;
|
||||||
struct ospf_lsa_net *ln = NULL;
|
struct ospf_lsa_net *ln = NULL;
|
||||||
|
@ -1688,7 +1687,6 @@ ospf_dump_lsa(struct top_hash_entry *he, struct proto *p)
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1704,6 +1702,7 @@ ospf_top_dump(struct top_graph *f, struct proto *p)
|
||||||
ospf_dump_lsa(e, p);
|
ospf_dump_lsa(e, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/* This is very inefficient, please don't call it often */
|
/* This is very inefficient, please don't call it often */
|
||||||
|
|
||||||
|
|
|
@ -168,7 +168,7 @@ pipe_get_status(struct proto *P, byte *buf)
|
||||||
static int
|
static int
|
||||||
pipe_reconfigure(struct proto *P, struct proto_config *new)
|
pipe_reconfigure(struct proto *P, struct proto_config *new)
|
||||||
{
|
{
|
||||||
struct pipe_proto *p = (struct pipe_proto *) P;
|
// struct pipe_proto *p = (struct pipe_proto *) P;
|
||||||
struct pipe_config *o = (struct pipe_config *) P->cf;
|
struct pipe_config *o = (struct pipe_config *) P->cf;
|
||||||
struct pipe_config *n = (struct pipe_config *) new;
|
struct pipe_config *n = (struct pipe_config *) new;
|
||||||
|
|
||||||
|
|
|
@ -752,6 +752,7 @@ new_iface(struct proto *p, struct iface *new, unsigned long flags, struct iface_
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/* On dummy, we just return non-working socket, so that user gets error every time anyone requests table */
|
/* On dummy, we just return non-working socket, so that user gets error every time anyone requests table */
|
||||||
|
return rif;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -956,7 +957,7 @@ rip_rte_insert(net *net UNUSED, rte *rte)
|
||||||
static void
|
static void
|
||||||
rip_rte_remove(net *net UNUSED, rte *rte)
|
rip_rte_remove(net *net UNUSED, rte *rte)
|
||||||
{
|
{
|
||||||
struct proto *p = rte->attrs->proto;
|
// struct proto *p = rte->attrs->proto;
|
||||||
CHK_MAGIC;
|
CHK_MAGIC;
|
||||||
DBG( "rip_rte_remove: %p\n", rte );
|
DBG( "rip_rte_remove: %p\n", rte );
|
||||||
rem_node( &rte->u.rip.garbage );
|
rem_node( &rte->u.rip.garbage );
|
||||||
|
|
|
@ -87,7 +87,7 @@ struct ip_mreqn
|
||||||
#define fill_mreq_ifa fill_mreq
|
#define fill_mreq_ifa fill_mreq
|
||||||
#define fill_mreq_grp fill_mreq
|
#define fill_mreq_grp fill_mreq
|
||||||
|
|
||||||
static inline fill_mreq(struct ip_mreqn *m, struct iface *ifa, ip_addr maddr)
|
static inline void fill_mreq(struct ip_mreqn *m, struct iface *ifa, ip_addr maddr)
|
||||||
{
|
{
|
||||||
bzero(m, sizeof(*m));
|
bzero(m, sizeof(*m));
|
||||||
m->imr_ifindex = ifa->index;
|
m->imr_ifindex = ifa->index;
|
||||||
|
|
|
@ -70,7 +70,8 @@ static struct resclass rf_class = {
|
||||||
"FILE",
|
"FILE",
|
||||||
sizeof(struct rfile),
|
sizeof(struct rfile),
|
||||||
rf_free,
|
rf_free,
|
||||||
rf_dump
|
rf_dump,
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
void *
|
void *
|
||||||
|
@ -195,7 +196,8 @@ static struct resclass tm_class = {
|
||||||
"Timer",
|
"Timer",
|
||||||
sizeof(timer),
|
sizeof(timer),
|
||||||
tm_free,
|
tm_free,
|
||||||
tm_dump
|
tm_dump,
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -564,7 +566,8 @@ static struct resclass sk_class = {
|
||||||
"Socket",
|
"Socket",
|
||||||
sizeof(sock),
|
sizeof(sock),
|
||||||
sk_free,
|
sk_free,
|
||||||
sk_dump
|
sk_dump,
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -640,7 +643,7 @@ fill_in_sockaddr(sockaddr *sa, ip_addr a, unsigned port)
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
fill_in_sockifa(sockaddr *sa, struct iface *ifa)
|
fill_in_sockifa(sockaddr *sa UNUSED, struct iface *ifa UNUSED)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1492,7 +1495,6 @@ io_loop(void)
|
||||||
{
|
{
|
||||||
sock *s = current_sock;
|
sock *s = current_sock;
|
||||||
int e;
|
int e;
|
||||||
int steps;
|
|
||||||
|
|
||||||
if ((s->type < SK_MAGIC) && FD_ISSET(s->fd, &rd) && s->rx_hook)
|
if ((s->type < SK_MAGIC) && FD_ISSET(s->fd, &rd) && s->rx_hook)
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "nest/bird.h"
|
#include "nest/bird.h"
|
||||||
#include "nest/cli.h"
|
#include "nest/cli.h"
|
||||||
|
|
|
@ -17,6 +17,7 @@ void async_config(void);
|
||||||
void async_dump(void);
|
void async_dump(void);
|
||||||
void async_shutdown(void);
|
void async_shutdown(void);
|
||||||
void cmd_reconfig(char *name, int type);
|
void cmd_reconfig(char *name, int type);
|
||||||
|
void cmd_shutdown(void);
|
||||||
|
|
||||||
/* io.c */
|
/* io.c */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue