GSMTAP

## Files

file | gsmtap_util.h
file | gsmtap_util.c

## Data Structures

struct | gsmtap_inst
| one gsmtap instance More...

## Functions

uint8_t | chantype_rsl2gsmtap (uint8_t rsl_chantype, uint8_t link_id)
| convert RSL channel number to GSMTAP channel type More...
struct msgb * | gsmtap_makemsg_ex (uint8_t type, uint16_t arfcn, uint8_t ts, uint8_t chan_type, uint8_t ss, uint32_t fn, int8_t signal_dbm, uint8_t snr, const uint8_t *data, unsigned int len)
| create an arbitrary type GSMTAP message More...
struct msgb * | gsmtap_makemsg (uint16_t arfcn, uint8_t ts, uint8_t chan_type, uint8_t ss, uint32_t fn, int8_t signal_dbm, uint8_t snr, const uint8_t *data, unsigned int len)
| create L1/L2 data and put it into GSMTAP More...
static int | gsmtap_inst_fd (struct gsmtap_inst *gti)
| obtain the file descriptor associated with a gsmtap instance
int | gsmtap_source_init_fd (const char *host, uint16_t port)
| Create a new (sending) GSMTAP source socket. More...
int | gsmtap_source_add_sink_fd (int gsmtap_fd)
| Add a local sink to an existing GSMTAP source and return fd. More...
struct gsmtap_inst * | gsmtap_source_init (const char *host, uint16_t port, int ofd_wq_mode)
| Open GSMTAP source socket, connect and register osmo_fd. More...
int | gsmtap_source_add_sink (struct gsmtap_inst *gti)
| Add a local sink to an existing GSMTAP source instance.
int | gsmtap_sendmsg (struct gsmtap_inst *gti, struct msgb *msg)
| Send a Message buffers through a GSMTAP source. More...
int | gsmtap_send_ex (struct gsmtap_inst *gti, uint8_t type, uint16_t arfcn, uint8_t ts, uint8_t chan_type, uint8_t ss, uint32_t fn, int8_t signal_dbm, uint8_t snr, const uint8_t *data, unsigned int len)
| send an arbitrary type through GSMTAP. See gsmtap_makemsg_ex for arguments
int | gsmtap_send (struct gsmtap_inst *gti, uint16_t arfcn, uint8_t ts, uint8_t chan_type, uint8_t ss, uint32_t fn, int8_t signal_dbm, uint8_t snr, const uint8_t *data, unsigned int len)
| send a message from L1/L2 through GSMTAP. See gsmtap_makemsg for arguments
static int | gsmtap_wq_w_cb (struct osmo_fd *ofd, struct msgb *msg)
static int | gsmtap_sink_fd_cb (struct osmo_fd *fd, unsigned int flags)

## Variables

struct gsmtap_inst | __attribute__

## Detailed Description

## Function Documentation

uint8_t chantype_rsl2gsmtap | ( | uint8_t | rsl_chantype,
|  | uint8_t | link_id
| ) |  |

convert RSL channel number to GSMTAP channel type

Parameters

  [in] | rsl_chantype | RSL channel type
  [in] | link_id | RSL link identifier

Returns
  GSMTAP channel type

struct msgb * gsmtap_makemsg | ( | uint16_t | arfcn,
|  | uint8_t | ts,
|  | uint8_t | chan_type,
|  | uint8_t | ss,
|  | uint32_t | fn,
|  | int8_t | signal_dbm,
|  | uint8_t | snr,
|  | const uint8_t * | data,
|  | unsigned int | len
| ) |  |

create L1/L2 data and put it into GSMTAP

Parameters

  [in] | arfcn | GSM ARFCN (Channel Number)
  [in] | ts | GSM time slot
  [in] | chan_type | Channel Type
  [in] | ss | Sub-slot
  [in] | fn | GSM Frame Number
  [in] | signal_dbm | Signal Strength (dBm)
  [in] | snr | Signal/Noise Ratio (SNR)
  [in] | data | Pointer to data buffer
  [in] | len | Length of data

This function will allocate a new msgb and fill it with a GSMTAP header containing the information

References gsmtap_makemsg_ex().

struct msgb * gsmtap_makemsg_ex | ( | uint8_t | type,
|  | uint16_t | arfcn,
|  | uint8_t | ts,
|  | uint8_t | chan_type,
|  | uint8_t | ss,
|  | uint32_t | fn,
|  | int8_t | signal_dbm,
|  | uint8_t | snr,
|  | const uint8_t * | data,
|  | unsigned int | len
| ) |  |

create an arbitrary type GSMTAP message

Parameters

  [in] | type | The GSMTAP_TYPE_xxx constant of the message to create
  [in] | arfcn | GSM ARFCN (Channel Number)
  [in] | ts | GSM time slot
  [in] | chan_type | Channel Type
  [in] | ss | Sub-slot
  [in] | fn | GSM Frame Number
  [in] | signal_dbm | Signal Strength (dBm)
  [in] | snr | Signal/Noise Ratio (SNR)
  [in] | data | Pointer to data buffer
  [in] | len | Length of data

This function will allocate a new msgb and fill it with a GSMTAP header containing the information

References msgb_alloc(), and msgb_put().

Referenced by gsmtap_makemsg(), and gsmtap_send_ex().

int gsmtap_sendmsg | ( | struct gsmtap_inst * | gti,
|  | struct msgb * | msg
| ) |  |

Send a Message buffers through a GSMTAP source.

Parameters

  [in] | gti | GSMTAP instance
  [in] | msg | message buffer

References msgb::data, gsmtap_inst_fd(), msgb::len, msgb_free(), gsmtap_inst::ofd_wq_mode, osmo_wqueue_enqueue(), and gsmtap_inst::wq.

Referenced by gsmtap_inst_fd(), and gsmtap_send_ex().

int gsmtap_source_add_sink_fd | ( | int | gsmtap_fd | ) |

Add a local sink to an existing GSMTAP source and return fd.

Parameters

  [in] | gsmtap_fd | file descriptor of the gsmtap socket

Returns
  file descriptor of locally bound receive socket

In case the GSMTAP socket is connected to a local destination IP/port, this function creates a corresponding receiving socket bound to that destination IP + port.

In case the gsmtap socket is not connected to a local IP/port, or creation of the receiving socket fails, a negative error code is returned.

References osmo_sock_init_sa(), and osmo_sockaddr_is_local().

Referenced by gsmtap_inst_fd(), and gsmtap_source_add_sink().

struct gsmtap_inst * gsmtap_source_init | ( | const char * | host,
|  | uint16_t | port,
|  | int | ofd_wq_mode
| ) |  |

Open GSMTAP source socket, connect and register osmo_fd.

Parameters

  [in] | host | host name or IP address in string format
  [in] | port | UDP port number in host byte order
  [in] | ofd_wq_mode | Register osmo_wqueue (1) or not (0)

Open GSMTAP source (sending) socket, connect it to host/port, allocate 'struct gsmtap_inst' and optionally osmo_fd/osmo_wqueue registration. This means it is like gsmtap_init2 but integrated with libosmocore Select loop abstraction

References osmo_wqueue::bfd, osmo_fd::fd, gsmtap_source_init_fd(), gsmtap_inst::ofd_wq_mode, osmo_fd_register(), osmo_wqueue_init(), gsmtap_inst::sink_ofd, gsmtap_inst::wq, and osmo_wqueue::write_cb.

Referenced by gsmtap_inst_fd().

int gsmtap_source_init_fd | ( | const char * | host,
|  | uint16_t | port
| ) |  |

Create a new (sending) GSMTAP source socket.

Parameters

  [in] | host | host name or IP address in string format
  [in] | port | UDP port number in host byte order

Opens a GSMTAP source (sending) socket, conncet it to host/port and return resulting fd. If host is NULL, the destination address will be localhost. If port is 0, the default GSMTAP_UDP_PORT will be used.

References osmo_sock_init().

Referenced by gsmtap_inst_fd(), and gsmtap_source_init().