/* Osmocom Iuh Interface Types
 * (C) 2021 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
 * Author: Pau Espin Pedrol <pespin@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
 */

 /* Iuh Codec Port Types
  *
  * (C) 2019 by Harald Welte <laforge@gnumonks.org>
  * 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
  */

module Iuh_Types {

import from HNBAP_PDU_Descriptions all;
import from HNBAP_Types all;
import from RUA_PDU_Descriptions all;
import from RUA_Types all;

type union Iuh_PDU {
	HNBAP_PDU	hnbap,
	RUA_PDU		rua,
	octetstring	payload
}

};
