]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_flags.c
lib: enforce vrf_name_to_id by returning default_vrf when name is null
[mirror_frr.git] / isisd / isis_flags.c
index 716bee0546c0624bd9c59c176bccdf43703aa0c8..b1ece94e8ebc3051a0ed851152e1773f4231d436 100644 (file)
@@ -3,25 +3,24 @@
  *                             Routines for manipulation of SSN and SRM flags
  *
  * Copyright (C) 2001,2002   Sampo Saaristo
- *                           Tampere University of Technology      
+ *                           Tampere University of Technology
  *                           Institute of Communications Engineering
  *
- * This program is free software; you can redistribute it and/or modify it 
- * under the terms of the GNU General Public Licenseas published by the Free 
- * Software Foundation; either version 2 of the License, or (at your option) 
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public Licenseas published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
  * any later version.
  *
- * This program 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 
+ * This program 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; if not, write to the Free Software Foundation, Inc., 
- * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * 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>
 #include "log.h"
 #include "linklist.h"
 #include "isisd/isis_common.h"
 #include "isisd/isis_flags.h"
 
-int
-flags_get_index (struct flags *flags) 
+void flags_initialize(struct flags *flags)
 {
-  struct listnode *node;
-  int index;
-
-  if (flags->free_idcs == NULL || flags->free_idcs->count == 0) {
-    flags->maxindex++;
-    index = flags->maxindex;
-  } else {
-    node = listhead (flags->free_idcs);
-    index = (int) getdata (node);
-    listnode_delete (flags->free_idcs, (void *)index);
-  }
-  
-  return index;
+       flags->maxindex = 0;
+       flags->free_idcs = NULL;
 }
 
-void 
-flags_free_index (struct flags *flags, int index) 
+long int flags_get_index(struct flags *flags)
 {
-  if (flags->free_idcs == NULL) {
-    flags->free_idcs = list_new ();
-  }
-  
-  listnode_add (flags->free_idcs, (void *)index);
-  
-  return;
+       struct listnode *node;
+       long int index;
+
+       if (flags->free_idcs == NULL || flags->free_idcs->count == 0) {
+               index = flags->maxindex++;
+       } else {
+               node = listhead(flags->free_idcs);
+               index = (long int)listgetdata(node);
+               listnode_delete(flags->free_idcs, (void *)index);
+               index--;
+       }
+
+       return index;
 }
 
-int  
-flags_any_set (u_int32_t *flags)
+void flags_free_index(struct flags *flags, long int index)
 {
+       if (index + 1 == flags->maxindex) {
+               flags->maxindex--;
+               return;
+       }
+
+       if (flags->free_idcs == NULL) {
+               flags->free_idcs = list_new();
+       }
 
-  u_int32_t zero[ISIS_MAX_CIRCUITS]; 
-  memset (zero, 0x00, ISIS_MAX_CIRCUITS*4); 
+       listnode_add(flags->free_idcs, (void *)(index + 1));
+
+       return;
+}
+
+int flags_any_set(uint32_t *flags)
+{
+       uint32_t zero[ISIS_MAX_CIRCUITS];
+       memset(zero, 0x00, ISIS_MAX_CIRCUITS * 4);
 
-  return bcmp(flags, zero, ISIS_MAX_CIRCUITS*4);
+       return bcmp(flags, zero, ISIS_MAX_CIRCUITS * 4);
 }