module SCTP_Templates {

/* (C) 2024 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 Socket_API_Definitions all;

template (value) SctpTuple
ts_SctpTuple(template (omit) integer ppid := omit,
	     template (omit) AssociationId assoc_id := omit) := {
	sinfo_stream := omit,
	sinfo_ppid := ppid,
	remSocks := omit,
	assocId := assoc_id
};
template SctpTuple
tr_SctpTuple(template integer ppid := *,
	     template AssociationId assoc_id := *) := {
	sinfo_stream := *,
	sinfo_ppid := ppid,
	remSocks := *,
	assocId := assoc_id
};


template Socket_API_Definitions.PortEvent
tr_SctpAssocChange(template (present) SAC_STATE state := ?,
		   template (present) ConnectionId conn_id := ?,
		   template (present) SctpTuple sctp := ?) := {
	sctpEvent := {
		sctpAssocChange := {
			clientId := conn_id,
			proto := {
				sctp := sctp
			},
			sac_state := state
		}
	}
}

template Socket_API_Definitions.PortEvent
tr_SctpPeerAddrChange(template (present) SPC_STATE state := ?,
		      template (present) ConnectionId conn_id := ?) := {
	sctpEvent := {
		sctpPeerAddrChange := {
			clientId := conn_id,
			spc_state := state
		}
	}
}

template Socket_API_Definitions.PortEvent
tr_SctpShutDownEvent(template (present) ConnectionId conn_id := ?) := {
	sctpEvent := {
		sctpShutDownEvent := {
			clientId := conn_id
		}
	}
}

}