module DIAMETER_rfc5447_Templates {

/* (C) 2023 by sysmocom s.f.m.c. GmbH <info@sysmocom.de
 * All rights reserved.
 *
 * Released under the terms of GNU General Public License, Version 2 or
 * (at your option) any later version.
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

import from General_Types all;
import from DIAMETER_Types all;
import from DIAMETER_Templates all;
import from Osmocom_Types all;
import from Misc_Helpers all;
import from DIAMETER_rfc4004_Templates all;

/* 4.2.1. MIP6-Agent-Info AVP */
template (value) GenericAVP ts_AVP_MIP6AgentInfo(template (value) MIPv4_NONE_MIP_Home_Agent_Address addr) := {
	avp := {
		avp_header := ts_DIA_Hdr(c_AVP_Code_MIPv6_NONE_MIP6_Agent_Info),
		avp_data := {
			avp_MIPv6_NONE_MIP6_Agent_Info := {
				ts_AVP_MIPHomeAgentAddress(addr)
			}
		}
	}
}

/* 4.2.5. MIP6-Feature-Vector AVP */
const uint64_t DIA_RFC5447_MIP6_Feature_Vector_MIP6_INTEGRATED := hex2int('0000000000000001'H);
const uint64_t DIA_RFC5447_MIP6_Feature_Vector_LOCAL_HOME_AGENT_ASSIGNMENT := hex2int('0000000000000002'H);


/* 4.2.5. MIP6-Feature-Vector AVP */
template (value) GenericAVP ts_AVP_MIP6FeatureVector(template (value) MIPv6_NONE_MIP6_Feature_Vector inp) := {
	avp := {
		avp_header := ts_DIA_Hdr(c_AVP_Code_MIPv6_NONE_MIP6_Feature_Vector),
		avp_data := {
			avp_MIPv6_NONE_MIP6_Feature_Vector := inp
		}
	}
}
template (present) GenericAVP tr_AVP_MIP6FeatureVector(template (present) MIPv6_NONE_MIP6_Feature_Vector inp := ?) := {
	avp := {
		avp_header := tr_DIA_Hdr(c_AVP_Code_MIPv6_NONE_MIP6_Feature_Vector),
		avp_data := {
			avp_MIPv6_NONE_MIP6_Feature_Vector := inp
		}
	}
}

}