]> git.proxmox.com Git - mirror_frr.git/blobdiff - babeld/babel_interface.h
babeld: ignore nonzero flag bits in Hello TLVs
[mirror_frr.git] / babeld / babel_interface.h
index 64509afa17d2efe08dcd7bdac2a0645091d8029e..12fa6e2bad9a5a4b884ff6553bd082c3e035bd77 100644 (file)
@@ -1,23 +1,6 @@
+// SPDX-License-Identifier: MIT
 /*
 Copyright 2011 by Matthieu Boutier and Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
 */
 
 #ifndef BABEL_INTERFACE_H
@@ -32,7 +15,7 @@ THE SOFTWARE.
 #define CONFIG_NO 1
 #define CONFIG_YES 2
 
-/* babeld interface informations */
+/* babeld interface information */
 struct babel_interface {
     unsigned short flags;                     /* see below */
     unsigned short cost;
@@ -50,7 +33,7 @@ struct babel_interface {
     char have_buffered_id;
     char have_buffered_nh;
     char have_buffered_prefix;
-    unsigned char buffered_id[16];
+    unsigned char buffered_id[8];
     unsigned char buffered_nh[4];
     unsigned char buffered_prefix[16];
     unsigned char *sendbuf;
@@ -100,19 +83,9 @@ if_up(struct interface *ifp)
 {
     return (if_is_operative(ifp) &&
             ifp->connected != NULL &&
-            (babel_get_if_nfo(ifp)->flags & BABEL_IF_IS_UP));
+            CHECK_FLAG(babel_get_if_nfo(ifp)->flags, BABEL_IF_IS_UP));
 }
 
-/* types:
- struct interface _ifp, struct listnode node */
-#define FOR_ALL_INTERFACES(_ifp, _node)                                              \
-  for(ALL_LIST_ELEMENTS_RO(vrf_iflist(VRF_DEFAULT), _node, _ifp))
-
-/* types:
- struct interface *ifp, struct connected *_connected, struct listnode *node */
-#define FOR_ALL_INTERFACES_ADDRESSES(ifp, _connected, _node)                   \
-    for(ALL_LIST_ELEMENTS_RO(ifp->connected, _node, _connected))
-
 struct buffered_update {
     unsigned char id[8];
     unsigned char prefix[16];
@@ -120,7 +93,6 @@ struct buffered_update {
     unsigned char pad[3];
 };
 
-
 /* init function */
 void babel_if_init(void);
 
@@ -132,6 +104,11 @@ int babel_interface_delete (int, struct zclient *, zebra_size_t, vrf_id_t);
 int babel_interface_address_add (int, struct zclient *, zebra_size_t, vrf_id_t);
 int babel_interface_address_delete (int, struct zclient *, zebra_size_t, vrf_id_t);
 
+int babel_ifp_create(struct interface *ifp);
+int babel_ifp_up(struct interface *ifp);
+int babel_ifp_down(struct interface *ifp);
+int babel_ifp_destroy(struct interface *ifp);
+
 unsigned jitter(babel_interface_nfo *, int);
 unsigned update_jitter(babel_interface_nfo *babel_ifp, int urgent);
 /* return "true" if "address" is one of our ipv6 addresses */