module IPL4_GSMTAP_CtrlFunct {

  import from GSMTAP_PortType all;
  import from IPL4asp_Types all;

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

  external function f_IPL4_connect(
    inout GSMTAP_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 GSMTAP_PT portRef,
    in ConnectionId id,
    in ProtoTuple proto := { unspecified := {} }
  ) return Result;

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

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

}