]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospf6d/ospf6_message.c
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / ospf6d / ospf6_message.c
index 93a062b215f5f1f9d81d026d8d95019dff42eae6..b7f261fcf9954de0ee8897a7a417665aea120117 100644 (file)
@@ -1,21 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * Copyright (C) 2003 Yasuhiro Ohara
- *
- * This file is part of GNU Zebra.
- *
- * GNU Zebra is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2, or (at your option) any
- * later version.
- *
- * GNU Zebra is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; see the file COPYING; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <zebra.h>
@@ -28,6 +13,7 @@
 #include "linklist.h"
 #include "lib_errors.h"
 #include "checksum.h"
+#include "network.h"
 
 #include "ospf6_proto.h"
 #include "ospf6_lsa.h"
@@ -2015,6 +2001,9 @@ static void ospf6_auth_trailer_copy_keychain_key(struct ospf6_interface *oi)
                         * these values
                         */
                        oi->at_data.hash_algo = key->hash_algo;
+                       if (oi->at_data.auth_key)
+                               XFREE(MTYPE_OSPF6_AUTH_MANUAL_KEY,
+                                     oi->at_data.auth_key);
                        oi->at_data.auth_key = XSTRDUP(
                                MTYPE_OSPF6_AUTH_MANUAL_KEY, key->string);
                        oi->at_data.key_id = key->index;
@@ -2086,7 +2075,6 @@ static void ospf6_write(struct thread *thread)
 {
        struct ospf6 *ospf6 = THREAD_ARG(thread);
        struct ospf6_interface *oi;
-       struct ospf6_interface *last_serviced_oi = NULL;
        struct ospf6_header *oh;
        struct ospf6_packet *op;
        struct listnode *node;
@@ -2106,9 +2094,7 @@ static void ospf6_write(struct thread *thread)
        assert(node);
        oi = listgetdata(node);
 
-       while ((pkt_count < ospf6->write_oi_count) && oi
-              && (last_serviced_oi != oi)) {
-
+       while ((pkt_count < ospf6->write_oi_count) && oi) {
                op = ospf6_fifo_head(oi->obuf);
                assert(op);
                assert(op->length >= OSPF6_HEADER_SIZE);
@@ -2221,7 +2207,6 @@ static void ospf6_write(struct thread *thread)
                list_delete_node(ospf6->oi_write_q, node);
                if (ospf6_fifo_head(oi->obuf) == NULL) {
                        oi->on_write_q = 0;
-                       last_serviced_oi = NULL;
                        oi = NULL;
                } else {
                        listnode_add(ospf6->oi_write_q, oi);
@@ -2301,7 +2286,7 @@ static uint16_t ospf6_make_dbdesc(struct ospf6_neighbor *on, struct stream *s)
        /* if this is initial one, initialize sequence number for DbDesc */
        if (CHECK_FLAG(on->dbdesc_bits, OSPF6_DBDESC_IBIT)
            && (on->dbdesc_seqnum == 0)) {
-               on->dbdesc_seqnum = monotime(NULL);
+               on->dbdesc_seqnum = frr_sequence32_next();
        }
 
        /* reserved */