module DIAMETER_rfc4004_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;

/* 4.2.1. MIP6-Agent-Info AVP */
template (value) MIPv4_NONE_MIP_Home_Agent_Address ts_AVP_Home_Agent_Address(template (value) AddressType addr_type,
									     template (value) octetstring addr_data) := {
	address_type := addr_type,
	address_data := addr_data
}

template (value) GenericAVP ts_AVP_MIPHomeAgentAddress(template (value) MIPv4_NONE_MIP_Home_Agent_Address addr) := {
	avp := {
		avp_header := ts_DIA_Hdr(c_AVP_Code_MIPv4_NONE_MIP_Home_Agent_Address),
		avp_data := {
			avp_MIPv4_NONE_MIP_Home_Agent_Address := addr
		}
	}
}

}