@@ -263,6 +263,13 @@ int AddressRange::from_attr(VectorAttribute *vattr, string& error_msg)
263263 return -1 ;
264264 }
265265
266+ /* ------------------------- Next Index -------------------------------- */
267+
268+ if ( vattr->vector_value (" NEXT_INDEX" , next) != 0 )
269+ {
270+ next = 0 ;
271+ }
272+
266273 /* ------------------------- Security Groups ---------------------------- */
267274
268275 value = vattr->vector_value (" SECURITY_GROUPS" );
@@ -488,6 +495,8 @@ int AddressRange::update_attributes(
488495
489496 vup->replace (" SIZE" , size);
490497
498+ vup->replace (" NEXT_INDEX" , next);
499+
491500 string value = vup->vector_value (" SECURITY_GROUPS" );
492501
493502 security_groups.clear ();
@@ -562,6 +571,11 @@ int AddressRange::from_vattr_db(VectorAttribute *vattr)
562571
563572 rc += vattr->vector_value (" SIZE" , size);
564573
574+ if ( vattr->vector_value (" NEXT_INDEX" , next) != 0 )
575+ {
576+ next = 0 ;
577+ }
578+
565579 rc += mac_to_i (vattr->vector_value (" MAC" ), mac);
566580
567581 if (is_ipv4 ())
@@ -737,6 +751,7 @@ void AddressRange::to_xml(ostringstream &oss) const
737751 }
738752
739753 oss << " <USED_LEASES>" << get_used_addr () << " </USED_LEASES>" ;
754+ oss << " <NEXT_INDEX>" << next << " </NEXT_INDEX>" ;
740755 oss << " </AR>" ;
741756}
742757
@@ -907,7 +922,7 @@ void AddressRange::to_xml(ostringstream &oss, const vector<int>& vms,
907922
908923 oss << " </LEASES>" ;
909924 }
910-
925+ oss << " <NEXT_INDEX> " << next << " </NEXT_INDEX> " ;
911926 oss << " </AR>" ;
912927}
913928
@@ -1429,6 +1444,8 @@ void AddressRange::allocated_to_attr()
14291444 }
14301445
14311446 attr->replace (" ALLOCATED" , oss.str ());
1447+
1448+ attr->replace (" NEXT_INDEX" , next);
14321449}
14331450
14341451/* -------------------------------------------------------------------------- */
@@ -1854,6 +1871,7 @@ const char * AddressRange::SG_RULE_ATTRIBUTES[] =
18541871 " AR_ID" ,
18551872 " TYPE" ,
18561873 " SIZE" ,
1874+ " NEXT_INDEX" ,
18571875 " MAC" ,
18581876 " IP" ,
18591877 " IP6"
@@ -2005,6 +2023,8 @@ int AddressRange::reserve_addr(int vid, unsigned int rsize, AddressRange *rar)
20052023
20062024 new_ar->replace (" SIZE" , rsize);
20072025
2026+ new_ar->replace (" NEXT_INDEX" , next);
2027+
20082028 new_ar->remove (" IPAM_MAD" );
20092029
20102030 rar->from_vattr (new_ar, errmsg);
@@ -2064,6 +2084,8 @@ int AddressRange::reserve_addr_by_index(int vid, unsigned int rsize,
20642084
20652085 new_ar->replace (" SIZE" , rsize);
20662086
2087+ new_ar->replace (" NEXT_INDEX" , next);
2088+
20672089 new_ar->remove (" IPAM_MAD" );
20682090
20692091 rar->from_vattr (new_ar, errmsg);
0 commit comments