]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospfd/ospf_interface.c
*: auto-convert to SPDX License IDs
[mirror_frr.git] / ospfd / ospf_interface.c
index 646d3183627df87bb912f285023ee12198e7e371..4ea367ecad36bf5eac3fc4618ea043c322728dac 100644 (file)
@@ -1,22 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * OSPF Interface functions.
  * Copyright (C) 1999, 2000 Toshiaki Takada
- *
- * 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>
@@ -30,6 +15,7 @@
 #include "command.h"
 #include "stream.h"
 #include "log.h"
+#include "network.h"
 #include "zclient.h"
 #include "bfd.h"
 #include "ldp_sync.h"
@@ -274,7 +260,7 @@ struct ospf_interface *ospf_if_new(struct ospf *ospf, struct interface *ifp,
        oi->t_ls_upd_event = NULL;
        oi->t_ls_ack_direct = NULL;
 
-       oi->crypt_seqnum = time(NULL);
+       oi->crypt_seqnum = frr_sequence32_next();
 
        ospf_opaque_type9_lsa_init(oi);
 
@@ -461,13 +447,13 @@ struct ospf_interface *ospf_if_lookup_recv_if(struct ospf *ospf,
 {
        struct route_node *rn;
        struct prefix_ipv4 addr;
-       struct ospf_interface *oi, *match;
+       struct ospf_interface *oi, *match, *unnumbered_match;
 
        addr.family = AF_INET;
        addr.prefix = src;
        addr.prefixlen = IPV4_MAX_BITLEN;
 
-       match = NULL;
+       match = unnumbered_match = NULL;
 
        for (rn = route_top(IF_OIFS(ifp)); rn; rn = route_next(rn)) {
                oi = rn->info;
@@ -482,7 +468,7 @@ struct ospf_interface *ospf_if_lookup_recv_if(struct ospf *ospf,
                        continue;
 
                if (CHECK_FLAG(oi->connected->flags, ZEBRA_IFA_UNNUMBERED))
-                       match = oi;
+                       unnumbered_match = oi;
                else if (prefix_match(CONNECTED_PREFIX(oi->connected),
                                      (struct prefix *)&addr)) {
                        if ((match == NULL) || (match->address->prefixlen
@@ -491,7 +477,10 @@ struct ospf_interface *ospf_if_lookup_recv_if(struct ospf *ospf,
                }
        }
 
-       return match;
+       if (match)
+               return match;
+
+       return unnumbered_match;
 }
 
 void ospf_interface_fifo_flush(struct ospf_interface *oi)