@@ -263,6 +263,13 @@ int AddressRange::from_attr(VectorAttribute *vattr, string& error_msg)
263
263
return -1 ;
264
264
}
265
265
266
+ /* ------------------------- Next Index -------------------------------- */
267
+
268
+ if ( vattr->vector_value (" NEXT_INDEX" , next) != 0 )
269
+ {
270
+ next = 0 ;
271
+ }
272
+
266
273
/* ------------------------- Security Groups ---------------------------- */
267
274
268
275
value = vattr->vector_value (" SECURITY_GROUPS" );
@@ -488,6 +495,8 @@ int AddressRange::update_attributes(
488
495
489
496
vup->replace (" SIZE" , size);
490
497
498
+ vup->replace (" NEXT_INDEX" , next);
499
+
491
500
string value = vup->vector_value (" SECURITY_GROUPS" );
492
501
493
502
security_groups.clear ();
@@ -562,6 +571,11 @@ int AddressRange::from_vattr_db(VectorAttribute *vattr)
562
571
563
572
rc += vattr->vector_value (" SIZE" , size);
564
573
574
+ if ( vattr->vector_value (" NEXT_INDEX" , next) != 0 )
575
+ {
576
+ next = 0 ;
577
+ }
578
+
565
579
rc += mac_to_i (vattr->vector_value (" MAC" ), mac);
566
580
567
581
if (is_ipv4 ())
@@ -737,6 +751,7 @@ void AddressRange::to_xml(ostringstream &oss) const
737
751
}
738
752
739
753
oss << " <USED_LEASES>" << get_used_addr () << " </USED_LEASES>" ;
754
+ oss << " <NEXT_INDEX>" << next << " </NEXT_INDEX>" ;
740
755
oss << " </AR>" ;
741
756
}
742
757
@@ -907,7 +922,7 @@ void AddressRange::to_xml(ostringstream &oss, const vector<int>& vms,
907
922
908
923
oss << " </LEASES>" ;
909
924
}
910
-
925
+ oss << " <NEXT_INDEX> " << next << " </NEXT_INDEX> " ;
911
926
oss << " </AR>" ;
912
927
}
913
928
@@ -1429,6 +1444,8 @@ void AddressRange::allocated_to_attr()
1429
1444
}
1430
1445
1431
1446
attr->replace (" ALLOCATED" , oss.str ());
1447
+
1448
+ attr->replace (" NEXT_INDEX" , next);
1432
1449
}
1433
1450
1434
1451
/* -------------------------------------------------------------------------- */
@@ -1854,6 +1871,7 @@ const char * AddressRange::SG_RULE_ATTRIBUTES[] =
1854
1871
" AR_ID" ,
1855
1872
" TYPE" ,
1856
1873
" SIZE" ,
1874
+ " NEXT_INDEX" ,
1857
1875
" MAC" ,
1858
1876
" IP" ,
1859
1877
" IP6"
@@ -2005,6 +2023,8 @@ int AddressRange::reserve_addr(int vid, unsigned int rsize, AddressRange *rar)
2005
2023
2006
2024
new_ar->replace (" SIZE" , rsize);
2007
2025
2026
+ new_ar->replace (" NEXT_INDEX" , next);
2027
+
2008
2028
new_ar->remove (" IPAM_MAD" );
2009
2029
2010
2030
rar->from_vattr (new_ar, errmsg);
@@ -2064,6 +2084,8 @@ int AddressRange::reserve_addr_by_index(int vid, unsigned int rsize,
2064
2084
2065
2085
new_ar->replace (" SIZE" , rsize);
2066
2086
2087
+ new_ar->replace (" NEXT_INDEX" , next);
2088
+
2067
2089
new_ar->remove (" IPAM_MAD" );
2068
2090
2069
2091
rar->from_vattr (new_ar, errmsg);
0 commit comments