Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
labs
BIRD Internet Routing Daemon
Commits
e81b440f
Commit
e81b440f
authored
Feb 21, 2010
by
Ondřej Zajíček
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix configure to enable warnings and fix most of them.
parent
9e43ccf0
Changes
31
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
102 additions
and
106 deletions
+102
-106
client/client.c
client/client.c
+12
-8
conf/gen_keywords.m4
conf/gen_keywords.m4
+3
-3
configure.in
configure.in
+6
-14
lib/event.c
lib/event.c
+2
-1
lib/ip.h
lib/ip.h
+1
-1
lib/ipv4.h
lib/ipv4.h
+1
-1
lib/socket.h
lib/socket.h
+2
-0
nest/a-path.c
nest/a-path.c
+2
-2
nest/cli.c
nest/cli.c
+2
-2
nest/locks.c
nest/locks.c
+2
-1
nest/proto.c
nest/proto.c
+1
-1
nest/rt-table.c
nest/rt-table.c
+6
-6
proto/bgp/attrs.c
proto/bgp/attrs.c
+5
-5
proto/bgp/bgp.c
proto/bgp/bgp.c
+6
-6
proto/bgp/packets.c
proto/bgp/packets.c
+1
-2
proto/ospf/hello.c
proto/ospf/hello.c
+6
-6
proto/ospf/lsalib.c
proto/ospf/lsalib.c
+7
-8
proto/ospf/lsalib.h
proto/ospf/lsalib.h
+2
-2
proto/ospf/lsupd.c
proto/ospf/lsupd.c
+3
-6
proto/ospf/neighbor.c
proto/ospf/neighbor.c
+1
-2
proto/ospf/ospf.c
proto/ospf/ospf.c
+7
-9
proto/ospf/ospf.h
proto/ospf/ospf.h
+3
-2
proto/ospf/packet.c
proto/ospf/packet.c
+0
-1
proto/ospf/rt.c
proto/ospf/rt.c
+3
-3
proto/ospf/topology.c
proto/ospf/topology.c
+5
-6
proto/pipe/pipe.c
proto/pipe/pipe.c
+1
-1
proto/rip/rip.c
proto/rip/rip.c
+2
-1
sysdep/linux/sysio.h
sysdep/linux/sysio.h
+1
-1
sysdep/unix/io.c
sysdep/unix/io.c
+7
-5
sysdep/unix/log.c
sysdep/unix/log.c
+1
-0
sysdep/unix/unix.h
sysdep/unix/unix.h
+1
-0
No files found.
client/client.c
View file @
e81b440f
...
...
@@ -311,10 +311,12 @@ update_state(void)
}
if
(
nstate
==
STATE_PROMPT
)
if
(
input_initialized
)
input_reveal
();
else
input_init
();
{
if
(
input_initialized
)
input_reveal
();
else
input_init
();
}
if
(
nstate
!=
STATE_PROMPT
)
input_hide
();
...
...
@@ -372,6 +374,8 @@ server_connect(void)
die
(
"fcntl: %m"
);
}
#define PRINTF(LEN, PARGS...) do { if (!skip_input) len = printf(PARGS); } while(0)
static
void
server_got_reply
(
char
*
x
)
{
...
...
@@ -379,15 +383,15 @@ server_got_reply(char *x)
int
len
=
0
;
if
(
*
x
==
'+'
)
/* Async reply */
skip_input
||
(
len
=
printf
(
">>> %s
\n
"
,
x
+
1
)
)
;
PRINTF
(
len
,
">>> %s
\n
"
,
x
+
1
);
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
&&
sscanf
(
x
,
"%d"
,
&
code
)
==
1
&&
code
>=
0
&&
code
<
10000
&&
(
x
[
4
]
==
' '
||
x
[
4
]
==
'-'
))
{
if
(
code
)
skip_input
||
(
len
=
printf
(
"%s
\n
"
,
verbose
?
x
:
x
+
5
)
)
;
PRINTF
(
len
,
"%s
\n
"
,
verbose
?
x
:
x
+
5
);
if
(
x
[
4
]
==
' '
)
{
nstate
=
STATE_PROMPT
;
...
...
@@ -396,7 +400,7 @@ server_got_reply(char *x)
}
}
else
skip_input
||
(
len
=
printf
(
"??? <%s>
\n
"
,
x
)
)
;
PRINTF
(
len
,
"??? <%s>
\n
"
,
x
);
if
(
skip_input
)
return
;
...
...
conf/gen_keywords.m4
View file @
e81b440f
...
...
@@ -23,7 +23,7 @@ m4_define(CF_DECLS, `m4_divert(-1)')
m4_define(CF_DEFINES, `m4_divert(-1)')
# 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_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
...
...
@@ -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)
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_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_divert(0)
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
...
...
configure.in
View file @
e81b440f
...
...
@@ -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(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(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])
...
...
@@ -56,24 +55,17 @@ AC_SEARCH_LIBS(clock_gettime,[c rt posix4])
AC_CANONICAL_HOST
AC_PROG_CC
if test -z "$GCC" ; then
AC_MSG_ERROR([This program requires the GNU C Compiler.])
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"
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Wno-pointer-sign -Wno-parentheses"
fi
AC_MSG_RESULT($CFLAGS)
AC_PROG_CC
if test -z "$GCC" ; then
AC_MSG_ERROR([This program requires the GNU C Compiler.])
fi
AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_RANLIB
...
...
lib/event.c
View file @
e81b440f
...
...
@@ -49,7 +49,8 @@ static struct resclass ev_class = {
"Event"
,
sizeof
(
event
),
(
void
(
*
)(
resource
*
))
ev_postpone
,
ev_dump
ev_dump
,
NULL
};
/**
...
...
lib/ip.h
View file @
e81b440f
...
...
@@ -46,7 +46,7 @@ char *ip_scope_text(unsigned);
struct
prefix
{
ip_addr
addr
;
int
len
;
unsigned
int
len
;
};
#define ip_is_prefix(a,l) (!ipa_nonzero(ipa_and(a, ipa_not(ipa_mkmask(l)))))
...
...
lib/ipv4.h
View file @
e81b440f
...
...
@@ -72,7 +72,7 @@ int ipv4_classify(u32);
u32
ipv4_class_mask
(
u32
);
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
;
}
...
...
lib/socket.h
View file @
e81b440f
...
...
@@ -66,6 +66,8 @@ int sk_leave_group(sock *s, ip_addr maddr);
int
sk_set_ipv6_checksum
(
sock
*
s
,
int
offset
);
#endif
int
sk_set_broadcast
(
sock
*
s
,
int
enable
);
static
inline
int
sk_send_buffer_empty
(
sock
*
sk
)
{
...
...
nest/a-path.c
View file @
e81b440f
...
...
@@ -385,7 +385,7 @@ as_path_match(struct adata *path, struct f_path_mask *mask)
struct
pm_pos
pos
[
2048
+
1
];
int
plen
=
parse_path
(
path
,
pos
);
int
l
,
h
,
i
,
nh
,
nl
;
u32
val
;
u32
val
=
0
;
/* l and h are bound of interval of positions where
are marked states */
...
...
@@ -417,7 +417,7 @@ as_path_match(struct adata *path, struct f_path_mask *mask)
goto
step
;
case
PM_QUESTION
:
step:
nh
=
-
1
;
nh
=
nl
=
-
1
;
for
(
i
=
h
;
i
>=
l
;
i
--
)
if
(
pos
[
i
].
mark
)
{
...
...
nest/cli.c
View file @
e81b440f
...
...
@@ -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
);
else
free
=
c
->
ring_read
-
c
->
ring_write
-
1
;
if
(
len
>
free
||
free
<
c
->
log_threshold
&&
class
<
(
unsigned
)
L_INFO
[
0
])
if
(
(
len
>
free
)
||
(
free
<
c
->
log_threshold
&&
class
<
(
unsigned
)
L_INFO
[
0
])
)
{
c
->
ring_overflow
++
;
continue
;
...
...
nest/locks.c
View file @
e81b440f
...
...
@@ -97,7 +97,8 @@ static struct resclass olock_class = {
"ObjLock"
,
sizeof
(
struct
object_lock
),
olock_free
,
olock_dump
olock_dump
,
NULL
};
/**
...
...
nest/proto.c
View file @
e81b440f
...
...
@@ -51,7 +51,7 @@ proto_enqueue(list *l, struct proto *p)
static
void
proto_relink
(
struct
proto
*
p
)
{
list
*
l
;
list
*
l
=
NULL
;
if
(
p
->
debug
&
D_STATES
)
{
...
...
nest/rt-table.c
View file @
e81b440f
...
...
@@ -158,7 +158,7 @@ rte_trace_out(unsigned int flag, struct proto *p, rte *e, char *msg)
}
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
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
)
rte_trace_out
(
D_FILTERS
,
p
,
new
,
"forced accept by protocol"
);
else
if
(
filter
==
FILTER_REJECT
||
filter
&&
f_run
(
filter
,
&
new
,
&
tmpa
,
rte_update_pool
,
FF_FORCE_TMPATTR
)
>
F_ACCEPT
)
else
if
(
(
filter
==
FILTER_REJECT
)
||
(
filter
&&
f_run
(
filter
,
&
new
,
&
tmpa
,
rte_update_pool
,
FF_FORCE_TMPATTR
)
>
F_ACCEPT
)
)
{
stats
->
exp_updates_filtered
++
;
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.
*/
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
;
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
and do not update routes */
if
(
p1
->
out_filter
==
FILTER_REJECT
||
p1
->
out_filter
&&
f_run
(
p1
->
out_filter
,
&
e
,
&
tmpa
,
rte_update_pool
,
FF_FORCE_TMPATTR
)
>
F_ACCEPT
)
if
(
(
p1
->
out_filter
==
FILTER_REJECT
)
||
(
p1
->
out_filter
&&
f_run
(
p1
->
out_filter
,
&
e
,
&
tmpa
,
rte_update_pool
,
FF_FORCE_TMPATTR
)
>
F_ACCEPT
)
)
ok
=
0
;
}
}
...
...
proto/bgp/attrs.c
View file @
e81b440f
...
...
@@ -47,7 +47,7 @@ bgp_check_origin(struct bgp_proto *p UNUSED, byte *a, int len UNUSED)
}
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"
};
...
...
@@ -257,14 +257,14 @@ static struct attr_desc bgp_attr_table[] = {
NULL
,
NULL
},
{
"cluster_list"
,
-
1
,
BAF_OPTIONAL
,
EAF_TYPE_INT_SET
,
0
,
/* BA_CLUSTER_LIST */
bgp_check_cluster_list
,
bgp_format_cluster_list
},
{
NULL
,
},
/* BA_DPA */
{
NULL
,
},
/* BA_ADVERTISER */
{
NULL
,
},
/* BA_RCID_PATH */
{
.
name
=
NULL
},
/* BA_DPA */
{
.
name
=
NULL
},
/* BA_ADVERTISER */
{
.
name
=
NULL
},
/* BA_RCID_PATH */
{
"mp_reach_nlri"
,
-
1
,
BAF_OPTIONAL
,
EAF_TYPE_OPAQUE
,
1
,
/* BA_MP_REACH_NLRI */
bgp_check_reach_nlri
,
NULL
},
{
"mp_unreach_nlri"
,
-
1
,
BAF_OPTIONAL
,
EAF_TYPE_OPAQUE
,
1
,
/* BA_MP_UNREACH_NLRI */
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 */
NULL
,
NULL
},
{
"as4_aggregator"
,
-
1
,
BAF_OPTIONAL
|
BAF_TRANSITIVE
,
EAF_TYPE_OPAQUE
,
1
,
/* BA_AS4_PATH */
...
...
proto/bgp/bgp.c
View file @
e81b440f
...
...
@@ -203,7 +203,7 @@ bgp_start_timer(timer *t, int value)
void
bgp_close_conn
(
struct
bgp_conn
*
conn
)
{
struct
bgp_proto
*
p
=
conn
->
bgp
;
//
struct bgp_proto *p = conn->bgp;
DBG
(
"BGP: Closing connection
\n
"
);
conn
->
packets_to_send
=
0
;
...
...
@@ -237,7 +237,7 @@ bgp_update_startup_delay(struct bgp_proto *p)
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
->
last_proto_error
=
now
;
...
...
@@ -492,7 +492,7 @@ bgp_setup_conn(struct bgp_proto *p, struct bgp_conn *conn)
}
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
->
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
;
BGP_TRACE
(
D_EVENTS
,
"Connecting to %I from local address %I"
,
s
->
daddr
,
s
->
saddr
);
bgp_setup_conn
(
p
,
conn
);
bgp_setup_sk
(
p
,
conn
,
s
);
bgp_setup_sk
(
conn
,
s
);
bgp_conn_set_state
(
conn
,
BS_CONNECT
);
if
(
sk_open
(
s
))
{
...
...
@@ -601,7 +601,7 @@ bgp_incoming_connection(sock *sk, int dummy UNUSED)
goto
err
;
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
);
bgp_send_open
(
&
p
->
incoming_conn
);
return
0
;
...
...
@@ -615,7 +615,7 @@ bgp_incoming_connection(sock *sk, int dummy UNUSED)
}
static
void
bgp_listen_sock_err
(
sock
*
sk
,
int
err
)
bgp_listen_sock_err
(
sock
*
sk
UNUSED
,
int
err
)
{
if
(
err
==
ECONNABORTED
)
log
(
L_WARN
"BGP: Incoming connection aborted"
);
...
...
proto/bgp/packets.c
View file @
e81b440f
...
...
@@ -44,7 +44,6 @@ static byte *
mrt_put_bgp4_hdr
(
byte
*
buf
,
struct
bgp_conn
*
conn
,
int
as4
)
{
struct
bgp_proto
*
p
=
conn
->
bgp
;
ip_addr
local_addr
;
if
(
as4
)
{
...
...
@@ -614,7 +613,7 @@ bgp_tx(sock *sk)
void
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
;
while
(
len
>
0
)
...
...
proto/ospf/hello.c
View file @
e81b440f
...
...
@@ -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
*
p
=
&
po
->
proto
;
char
*
beg
=
"Bad OSPF HELLO packet from "
,
*
rec
=
" received: "
;
unsigned
int
size
,
i
,
twoway
,
oldpriority
,
eligible
,
peers
;
u32
olddr
,
oldbdr
,
oldiface_id
,
tmp
;
unsigned
int
size
,
i
,
twoway
,
eligible
,
peers
;
u32
tmp
;
u32
*
pnrid
;
size
=
ntohs
(
ps_i
->
length
);
...
...
@@ -188,11 +188,11 @@ ospf_hello_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
if
(
!
twoway
)
ospf_neigh_sm
(
n
,
INM_1WAYREC
);
olddr
=
n
->
dr
;
oldbdr
=
n
->
bdr
;
oldpriority
=
n
->
priority
;
u32
olddr
=
n
->
dr
;
u32
oldbdr
=
n
->
bdr
;
u32
oldpriority
=
n
->
priority
;
#ifdef OSPFv3
oldiface_id
=
n
->
iface_id
;
u32
oldiface_id
=
n
->
iface_id
;
#endif
n
->
dr
=
ntohl
(
ps
->
dr
);
...
...
proto/ospf/lsalib.c
View file @
e81b440f
...
...
@@ -122,22 +122,22 @@ ntohlsah(struct ospf_lsa_header *n, struct ospf_lsa_header *h)
}
void
htonlsab
(
void
*
h
,
void
*
n
,
u16
type
,
u16
len
)
htonlsab
(
void
*
h
,
void
*
n
,
u16
len
)
{
u32
*
hid
=
h
;
u32
*
nid
=
n
;
int
i
;
unsigned
i
;
for
(
i
=
0
;
i
<
(
len
/
sizeof
(
u32
));
i
++
)
nid
[
i
]
=
htonl
(
hid
[
i
]);
}
void
ntohlsab
(
void
*
n
,
void
*
h
,
u16
type
,
u16
len
)
ntohlsab
(
void
*
n
,
void
*
h
,
u16
len
)
{
u32
*
nid
=
n
;
u32
*
hid
=
h
;
int
i
;
unsigned
i
;
for
(
i
=
0
;
i
<
(
len
/
sizeof
(
u32
));
i
++
)
hid
[
i
]
=
ntohl
(
nid
[
i
]);
...
...
@@ -185,11 +185,10 @@ void
lsasum_calculate
(
struct
ospf_lsa_header
*
h
,
void
*
body
)
{
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);
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];
...
...
@@ -203,7 +202,7 @@ lsasum_calculate(struct ospf_lsa_header *h, void *body)
// log(L_WARN "Checksum result %4x", h->checksum);
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
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
)))
return
0
;
...
...
proto/ospf/lsalib.h
View file @
e81b440f
...
...
@@ -12,8 +12,8 @@
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
htonlsab
(
void
*
h
,
void
*
n
,
u16
type
,
u16
len
);
void
ntohlsab
(
void
*
n
,
void
*
h
,
u16
type
,
u16
len
);
void
htonlsab
(
void
*
h
,
void
*
n
,
u16
len
);
void
ntohlsab
(
void
*
n
,
void
*
h
,
u16
len
);
void
lsasum_calculate
(
struct
ospf_lsa_header
*
header
,
void
*
body
);
u16
lsasum_check
(
struct
ospf_lsa_header
*
h
,
void
*
body
);
#define CMP_NEWER 1
...
...
proto/ospf/lsupd.c
View file @
e81b440f
...
...
@@ -290,8 +290,7 @@ ospf_lsupd_flood(struct proto_ospf *po,
htonlsah
(
hh
,
lh
);
help
=
(
u8
*
)
(
lh
+
1
);
en
=
ospf_hash_find_header
(
po
->
gr
,
domain
,
hh
);
htonlsab
(
en
->
lsa_body
,
help
,
hh
->
type
,
hh
->
length
-
sizeof
(
struct
ospf_lsa_header
));
htonlsab
(
en
->
lsa_body
,
help
,
hh
->
length
-
sizeof
(
struct
ospf_lsa_header
));
}
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
);
pktpos
=
pktpos
+
sizeof
(
struct
ospf_lsa_header
);
htonlsab
(
en
->
lsa_body
,
pktpos
,
en
->
lsa
.
type
,
en
->
lsa
.
length
-
sizeof
(
struct
ospf_lsa_header
));
htonlsab
(
en
->
lsa_body
,
pktpos
,
en
->
lsa
.
length
-
sizeof
(
struct
ospf_lsa_header
));
pktpos
=
pktpos
+
en
->
lsa
.
length
-
sizeof
(
struct
ospf_lsa_header
);
len
+=
en
->
lsa
.
length
;
lsano
++
;
...
...
@@ -630,8 +628,7 @@ ospf_lsupd_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
/* pg 144 (5d) */
void
*
body
=
mb_alloc
(
p
->
pool
,
lsatmp
.
length
-
sizeof
(
struct
ospf_lsa_header
));
ntohlsab
(
lsa
+
1
,
body
,
lsatmp
.
type
,
lsatmp
.
length
-
sizeof
(
struct
ospf_lsa_header
));
ntohlsab
(
lsa
+
1
,
body
,
lsatmp
.
length
-
sizeof
(
struct
ospf_lsa_header
));
/* We will do validation check after flooding and
acknowledging given LSA to minimize problems
...
...
proto/ospf/neighbor.c
View file @
e81b440f
...
...
@@ -440,7 +440,6 @@ void
bdr_election
(
struct
ospf_iface
*
ifa
)
{
struct
proto_ospf
*
po
=
ifa
->
oa
->
po
;
struct
proto
*
p
=
&
po
->
proto
;
u32
myid
=
po
->
router_id
;
struct
ospf_neighbor
*
neigh
,
*
ndr
,
*
nbdr
,
me
;
int
doadj
;
...
...
@@ -632,7 +631,7 @@ static void
rxmt_timer_hook
(
timer
*
timer
)
{
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
;
DBG
(
"%s: RXMT timer fired on interface %s for neigh: %I.
\n
"
,
...
...
proto/ospf/ospf.c
View file @
e81b440f
...
...
@@ -224,9 +224,11 @@ ospf_dump(struct proto *p)
}
}
/*
OSPF_TRACE(D_EVENTS, "LSA graph dump start:");
ospf_top_dump(po->gr, p);
OSPF_TRACE(D_EVENTS, "LSA graph dump finished");
*/
neigh_dump_all
();
}
...
...
@@ -500,7 +502,7 @@ ospf_rt_notify(struct proto *p, rtable *tbl UNUSED, net * n, rte * new, rte * ol
}
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
ospf_iface
*
ifa
;
...
...
@@ -915,7 +917,7 @@ ospf_reconfigure(struct proto *p, struct proto_config *c)
void
ospf_sh_neigh
(
struct
proto
*
p
,
char
*
iff
)
{
struct
ospf_iface
*
ifa
=
NULL
,
*
f
;
struct
ospf_iface
*
ifa
=
NULL
;
struct
ospf_neighbor
*
n
;
struct
proto_ospf
*
po
=
(
struct
proto_ospf
*
)
p
;
...
...
@@ -1006,7 +1008,7 @@ void
ospf_sh_iface
(
struct
proto
*
p
,
char
*
iff
)
{
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
)
{
...
...
@@ -1193,7 +1195,6 @@ show_lsa_network(struct top_hash_entry *he)
static
inline
void
show_lsa_sum_net
(
struct
top_hash_entry
*
he
)
{
struct
ospf_lsa_header
*
lsa
=
&
(
he
->
lsa
);
ip_addr
ip
;
int
pxlen
;
...
...
@@ -1217,7 +1218,7 @@ show_lsa_sum_rt(struct top_hash_entry *he)
u32
dst_rid
,
options
;
#ifdef OSPFv2
struct
ospf_lsa_sum
*
ls
=
he
->
lsa_body
;
//
struct ospf_lsa_sum *ls = he->lsa_body;
dst_rid
=
he
->
lsa
.
id
;
options
=
0
;
#else
/* OSPFv3 */
...
...
@@ -1235,7 +1236,6 @@ show_lsa_external(struct top_hash_entry *he)
{
struct
ospf_lsa_header
*
lsa
=
&
(
he
->
lsa
);
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_tag
[
16
]
=
""
;
ip_addr
ip
,
rt_fwaddr
;
...
...
@@ -1493,8 +1493,6 @@ ospf_sh_lsadb(struct proto *p)
if
((
dscope
!=
last_dscope
)
||
(
hea
[
i
]
->
domain
!=
last_domain
))
{
struct
iface
*
ifa
;
cli_msg
(
-
1017
,
""
);
switch
(
dscope
)
{
...
...
@@ -1506,7 +1504,7 @@ ospf_sh_lsadb(struct proto *p)
break
;
#ifdef OSPFv3
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
:
"?"
);
break
;
#endif
...
...
proto/ospf/ospf.h
View file @
e81b440f
...
...
@@ -704,7 +704,7 @@ struct ospf_area
struct
top_hash_entry
*
pxr_lsa
;
/* Originated prefix LSA */
list
cand
;
/* List of candidates for RT calc. */
struct
fib
net_fib
;
/* Networks to advertise or not */
int
stub
;
unsigned
stub
;
int
trcap
;
/* Transit capability? */
u32
options
;
/* Optional features */
struct
proto_ospf
*
po
;
...
...
@@ -781,13 +781,14 @@ void schedule_net_lsa(struct ospf_iface *ifa);
#ifdef OSPFv3
void
schedule_link_lsa
(
struct
ospf_iface
*
ifa
);
#else
static
inline
void
schedule_link_lsa
(
struct
ospf_iface
*
ifa
)
{}
static
inline
void
schedule_link_lsa
(
struct
ospf_iface
*
ifa
UNUSED
)
{}
#endif
void
ospf_sh_neigh
(
struct
proto
*
p
,
char
*
iff
);
void
ospf_sh
(
struct
proto
*
p
);
void
ospf_sh_iface
(
struct
proto
*
p
,
char
*
iff
);
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)
...
...
proto/ospf/packet.c
View file @
e81b440f
...
...
@@ -14,7 +14,6 @@ void
ospf_pkt_fill_hdr
(
struct
ospf_iface
*
ifa
,
void
*
buf
,
u8
h_type
)
{
struct
proto_ospf
*
po
=
ifa
->
oa
->
po
;
struct
proto
*
p
=
&
po
->
proto
;
struct
ospf_packet
*
pkt
;
pkt
=
(
struct
ospf_packet
*
)
buf
;
...
...
proto/ospf/rt.c
View file @
e81b440f
...
...
@@ -226,7 +226,7 @@ process_prefixes(struct ospf_area *oa)
static
void
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
;
orta
nf
;
u32
i
;
...
...
@@ -519,7 +519,7 @@ link_back(struct ospf_area *oa, struct top_hash_entry *en, struct top_hash_entry
static
void
ospf_rt_sum_tr
(
struct
ospf_area
*
oa
)