# megaco_udp

### MODULE

megaco_udp

### MODULE SUMMARY

Interface module to UDP transport protocol for Megaco/H.248.

### DESCRIPTION

This module contains the public interface to the UDP/IP version transport protocol for Megaco/H.248.

### EXPORTS

`start_transport() -> {ok, TransportRef}`

Types:

`TransportRef = pid()`

This function is used for starting the UDP/IP transport service. Use exit(TransportRef, Reason) to stop the transport service.

`open(TransportRef, OptionList) -> {ok, Handle, ControlPid} | {error, Reason}`

Types:

`TransportRef = pid() | regname()`
`OptionList = [option()]`
`option() = {port, integer()} |{options, list()} |{receive_handle, receive_handle()} |{module, atom()}`
`Handle = socket_handle()`
`receive_handle() = term()`
`ControlPid = pid()`
`Reason = term()`

This function is used to open an UDP/IP socket.

The `module` option makes it possible for the user to provide their own callback module. The functions `receive_message/4` or `process_received_message/4` of this module is called when a new message is received (which one depends on the size of the message; small - receive_message, large - process_received_message). Default value is megaco.

`close(Handle, Msg) -> ok`

Types:

`Handle = socket_handle()`
`Msg`

This function is used for closing an active UDP socket.

`socket(Handle) -> Socket`

Types:

`Handle = socket_handle()`
`Socket = inet_socket()`

This function is used to convert a socket_handle() to a inet_socket(). inet_socket() is a plain socket, see the inet module for more info.

`create_send_handle(Handle, Host, Port) -> send_handle()`

Types:

`Handle = socket_handle()`
`Host = {A,B,C,D} | string()`
`Port = integer()`

Creates a send handle from a transport handle. The send handle is intended to be used by megaco_udp:send_message/2.

`send_message(SendHandle, Msg) -> ok`

Types:

`SendHandle = send_handle()`
`Message = binary() | iolist()`

Sends a message on a socket. The send handle is obtained by megaco_udp:create_send_handle/3. Increments the NumOutMessages and NumOutOctets counters if message successfully sent. In case of a failure to send, the NumErrors counter is not inremented. This is done elsewhere in the megaco app.

`block(Handle) -> ok`

Types:

`Handle = socket_handle()`

Stop receiving incoming messages on the socket.

`unblock(Handle) -> ok`

Types:

`Handle = socket_handle()`

Starting to receive incoming messages from the socket again.

`upgrade_receive_handle(ControlPid, NewHandle) -> ok`

Types:

`ControlPid = pid()`
`NewHandle = receive_handle()`
`receive_handle() = term()`

Update the receive handle of the control process (e.g. after having changed protocol version).

`get_stats() -> {ok, TotalStats} | {error, Reason}`
`get_stats(SendHandle) -> {ok, SendHandleStats} | {error, Reason}`
`get_stats(SendHandle, Counter) -> {ok, CounterStats} | {error, Reason}`

Types:

`TotalStats = [total_stats()]`
`total_stats() = {send_handle(), [stats()]}`
`SendHandle = send_handle()`
`SendHandleStats = [stats()]`
`Counter = udp_stats_counter()`
`CounterStats = integer()`
`stats() = {udp_stats_counter(), integer()}`
`tcp_stats_counter() = medGwyGatewayNumInMessages | medGwyGatewayNumInOctets | medGwyGatewayNumOutMessages | medGwyGatewayNumOutOctets | medGwyGatewayNumErrors`
`Reason = term()`

Retreive the UDP related (SNMP) statistics counters.

`reset_stats() -> void()`
`reset_stats(SendHandle) -> void()`

Types:

`SendHandle = send_handle()`

Reset all TCP related (SNMP) statistics counters.

### AUTHORS

Lars Thorsén - support@erlang.ericsson.se

megaco 3.5
Copyright © 1991-2006 Ericsson AB