Commit Graph

9248 Commits

Author SHA1 Message Date
Donald Sharp
efb149d95b lib: Allow hash_get to sidestep expensive hash key generation in some cases
There is no need to generate a hash key *if* the hash_alloc_function
is NULL and the hash is empty.

This changed showed a measurable increase in performance for
table hash lookup for tables that were meant to be empty in
bgp( the distance commands ).

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-16 13:56:01 -04:00
Renato Westphal
4c6ed05e4e Merge pull request #1305 from donaldsharp/workqueue
lib: Free workqueue memory leak on free
2017-10-11 11:59:15 -03:00
Renato Westphal
73842a0596 Merge pull request #1317 from donaldsharp/babel_mem
babeld: Do not copy beyond end of data
2017-10-11 11:16:17 -03:00
Donald Sharp
da7f979a07 lib: Free workqueue memory leak on free
When free'ing the workqueue if you have items
on the workqueue you should free the memory associated
with it.

Additionally move the work_queue_item_remove function
to allow for static to be awesome

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-11 10:00:54 -04:00
Renato Westphal
f872bf502d Merge pull request #1322 from donaldsharp/ospf6_proto
ospf6d: Make ospf6_prefix have an empty v6 addr at end
2017-10-11 10:48:20 -03:00
Donald Sharp
c0f76ddf14 ospf6d: Make ospf6_prefix have an empty v6 addr at end
The `struct ospf6_prefix` type expects to have space allocated
at the end of the structure for a v6 prefix.  So let's tell
the compiler that there might be more there.  This is to fix
a coverity scan warning.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-11 08:19:26 -04:00
Martin Winter
ce5643b120 Merge pull request #1120 from donaldsharp/branch_million
configure: Have --enable-dev turn on better debugging.
2017-10-11 00:36:07 -07:00
Renato Westphal
02caabb5bb Merge pull request #1323 from donaldsharp/ospf_list_delete
ospfd: Fix ships in the night PR's and list_delete
2017-10-10 20:59:45 -03:00
Donald Sharp
2e5faea372 ospfd: Do not delete write_q 2 times either
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 17:35:19 -04:00
Donald Sharp
5b51cf7c9c ospfd: We should not be deleting ospf->oiflist 2 times
The ospf->oiflist deletion is happening 2 times now.
Let's delete it once only.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 17:09:05 -04:00
Donald Sharp
84519c8164 ospfd: Fix ships in the night PR's and list_delete
list_delete_and_null should be used.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 17:08:56 -04:00
Renato Westphal
6bab451dcd Merge pull request #1304 from chiragshah6/ospf_vrf_dev
ospfd: OSPFv2 VRF, add vrf_name in show command output
2017-10-10 15:14:21 -03:00
Renato Westphal
eafc51b47b Merge pull request #1316 from donaldsharp/high_stuff
High stuff
2017-10-10 14:51:02 -03:00
Donald Sharp
a3a2db0a4a Merge pull request #1319 from opensourcerouting/ldpd-use-after-free
ldpd: fix heap-use-after-free at exit
2017-10-10 12:57:22 -04:00
Chirag Shah
52d0c099a0 ospfd: OSPFv2 VRF abstact api
Create an api to display vrf name in vty or json format.
Use VRF Name for vtysh and vrfName for json output.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2017-10-10 09:43:54 -07:00
Jafar Al-Gharaibeh
39271f2192 Merge pull request #1314 from donaldsharp/pim_rpf_address
Pim rpf address
2017-10-10 11:42:26 -05:00
Chirag Shah
87bd50e857 ospfd: OSPFv2 VRF, vrf in show command output
Add VRF name in both vtysh and json format of
show commands.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2017-10-10 09:36:48 -07:00
Donald Sharp
7f7f77a01b ospfd: Free memory associated with ospf instance startup
We have memory that is initialized upon ospf instance
and area startup.  Free it up on shutdown.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:35:30 -04:00
Donald Sharp
3e7a965235 ripngd: Fix possible memory leak of route_node
There exists a path where we do not save the route_node
after creation.  Allow cleanup.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:35:16 -04:00
Donald Sharp
b286ddb07a lib: Add some documentation about argv_find
We expect that the index value passed in for argv_find
should be initially set to 0.  This way if the cli
ever changes there is no need to modify the initial
value.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:31:36 -04:00
Donald Sharp
d06542d566 lib: Fix missing va_end
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:31:36 -04:00
Donald Sharp
c2a2f37b65 ospfd: Fix leak of route_node
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:31:36 -04:00
Donald Sharp
0760d3c963 ospfd: Fix leak of stream
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:31:36 -04:00
Donald Sharp
a68730c62a ospfd: Fix memory leak
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:31:36 -04:00
Donald Sharp
757fd71168 ospfd: Fix leak of FD
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:31:36 -04:00
Donald Sharp
be1d57fc40 pimd: Fix uninited idx for argv_find
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:31:32 -04:00
Donald Sharp
a3acf37dc2 isisd: Fix leaked memory in error case
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-10 12:27:17 -04:00
Donald Sharp
5d920111b9 Merge pull request #1210 from opensourcerouting/misc-mpls-bgp-lu-fixes
Misc BGP-LU fixes
2017-10-10 12:19:37 -04:00
Renato Westphal
3cda750598 Merge pull request #1315 from dslicenc/bgp-interface
bgpd: check for bgp instance before processing interfaces
2017-10-10 12:25:23 -03:00
Renato Westphal
a901e098d7 ldpd: send correct notification code upon receipt of malformed packet
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-10 09:43:54 -03:00
Renato Westphal
50732983b9 ldpd: fix heap-use-after-free at exit
This problems happens because, in this port, whenever the child
processes want to log something they send a message to the parent. But
in the shutdown functions the first thing we do is to close the pipes
to the parent process. With that said, add some protections to prevent
the child processes from trying to use a closed pipe and just ignore
their log messages during shutdown. In the future we need to share
the logging configuration with the child processes so they can send
log messages on their own.

While here, remove some unnecessary calls to msgbuf_write() in
ldpe_shutdown().

Fixes #1253.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-10 09:37:31 -03:00
Renato Westphal
e56ab0e971 Merge pull request #1301 from donaldsharp/zebra_vxlan
Zebra vxlan
2017-10-10 09:00:44 -03:00
Donald Sharp
01b08f09c5 babeld: Do not copy beyond end of data
The function really_send_update takes a 'const unsigned char *id'.
and is called with myid(a 8 byte array) and route->src->id(an 8
byte array), but we copy these pointers into
babel_ifp->buffered_id which is a 16 byte array.

Adjust the size of buffered_id to be 8 bytes and fix the copy
to only copy the 8 bytes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-09 19:29:09 -04:00
Renato Westphal
424270dd23 Merge pull request #1297 from dslicenc/cm18154-import-table
zebra: resolve issue with importing table entries correctly
2017-10-09 20:27:57 -03:00
Renato Westphal
d855d11fad zebra: use a switch statement in nexthop_set_resolved()
This makes the function much easier to read, and also faster.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-09 20:15:14 -03:00
Renato Westphal
cbdb74116f bgpd: remove 'network' commands from the BGP_IPV6L node
These commands don't belong in the BGP_IPV6L_NODE node anymore. A similar
change was done for BGP_IPV4L_NODE in commit 9bedbb1e5.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-09 20:15:14 -03:00
Renato Westphal
ad4527eb61 zebra: fix uninitialized prefixes in the handling of FEC messages
This was causing some weird prefixes to pop up in my log files. One
alternate solution would be to call apply_mask() on the prefix, but
memcpy() is faster and just enough in this case.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-09 20:15:14 -03:00
Renato Westphal
9a62e84b5b zebra: fix logging of MPLS labels
* use %u instead of %d, we don't want to print negative labels;
* increase the size of label_buf to accommodate the worst case scenarios;
* use strlcat() instead of strcat() as a security best practice.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-10-09 20:15:14 -03:00
Renato Westphal
09d0f308ce Merge pull request #1237 from donaldsharp/distance_special
zebra: Modify metric read to be admin distance and metric
2017-10-09 20:11:39 -03:00
Don Slice
2f9123e069 bgpd: check for bgp instance before processing interfaces
Problem reported with the log displaying error messages if bgpd was
enabled in /etc/frr/daemons but bgp wasn't actually configured.  The
problem was due to operating on interfaces before if_create had been
called (which happens at "router bgp" not at frr starting.  Moved the
checks for the bgp instance before operating on interfaces.  Manual
testing successful and bgp-smoke completed with no new issues.

Ticket: CM-13504
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: CCR-6738
2017-10-09 16:41:58 +00:00
Donald Sharp
5fe58e3d62 pimd: Cleanup deep nesting in pim_cmd.c
Cleanup some deep nesting in pim_cmd.c so that functions
look easier on the eyes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-09 10:57:42 -04:00
Donald Sharp
48f41fe829 pimd: Display RPF address as part of json output
When displaying the 'show ip pim upstream' command.
Display proper information about the RPF address
choosen.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-09 10:56:54 -04:00
Lou Berger
f4dd8c4620 Merge pull request #1312 from donaldsharp/snmp_compile
ospf6d: Fix snmp compile breakage
2017-10-09 09:53:51 -04:00
Donald Sharp
0ab500803f ospf6d: Fix snmp compile breakage
The recent clang fixes for Static Analysis were run without
compiling `--enable-snmp` these changes broke the snmp build.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-10-09 08:54:30 -04:00
Donald Sharp
613aa4ddb2 Merge pull request #1310 from vjardin6WIND/null_references
lib: linklist avoid access NULL->data
2017-10-09 08:16:04 -04:00
Donald Sharp
edbb54715c Merge pull request #1309 from vjardin6WIND/clean
Fix clang warnings
2017-10-09 08:14:16 -04:00
Donald Sharp
6a1c0e595a Merge pull request #1311 from vjardin6WIND/csv_unittest
lib: csv unit tests
2017-10-09 08:05:47 -04:00
Vincent JARDIN
d9ced40ab7 lib: fix wrong warning from clang
The compiler cannot guess that rise() will not return here.
One should help.

Warning:
  Access to field 'file' results in a dereference of a null pointer
  (loaded from variable 'error')
aka error->file while error is NULL.

Signed-off-by: Vincent Jardin <vincent.jardin@6wind.com>
2017-10-09 13:07:50 +02:00
Vincent JARDIN
c7bba448d8 lib: csv unit tests
Fix csv unit tests.

To be run using,
  gcc -o csv csv.c -DTEST_CSV
  ./csv

Signed-off-by: Vincent Jardin <vincent.jardin@6wind.com>
2017-10-09 12:58:14 +02:00
Vincent JARDIN
43b798b7dd lib: fix NULL->field_len access
Currenlty, this function is used only by:
  - unit test of csv.c (see its main() section)
  - ptm_lib.c

In case of ptm, it is safe to return NULL because:
  csv_encode_record() -> return NULL
     _ptm_lib_encode_header() -> return NULL
        the only consumer of the return value is: ptm_lib_init_msg()
        that checks the NULL return.

Warning:
  Access to field 'field_len' results in a dereference of a null
  pointer (loaded from variable 'fld')

Signed-off-by: Vincent Jardin <vincent.jardin@6wind.com>
2017-10-09 12:42:11 +02:00