module GTPv2_CodecPort_CtrlFunct {

  import from GTPv2_CodecPort all;
  import from IPL4asp_Types all;

  external function f_IPL4_listen(
    inout GTPv2C_PT portRef,
    in HostName locName,
    in PortNumber locPort,
    in ProtoTuple proto,
    in OptionList options := {}
  ) return Result;

  external function f_IPL4_connect(
    inout GTPv2C_PT portRef,
    in HostName remName,
    in PortNumber remPort,
    in HostName locName,
    in PortNumber locPort,
    in ConnectionId connId,
    in ProtoTuple proto,
    in OptionList options := {}
  ) return Result;

  external function f_IPL4_close(
    inout GTPv2C_PT portRef,
    in ConnectionId id,
    in ProtoTuple proto := { unspecified := {} }
  ) return Result;

  external function f_IPL4_setUserData(
    inout GTPv2C_PT portRef,
    in ConnectionId id,
    in UserData userData
  ) return Result;

  external function f_IPL4_getUserData(
    inout GTPv2C_PT portRef,
    in ConnectionId id,
    out UserData userData
  ) return Result;

}
