diff --git a/src/host/layer23/src/common/l1ctl.c b/src/host/layer23/src/common/l1ctl.c index 2482c6153..8c9224428 100644 --- a/src/host/layer23/src/common/l1ctl.c +++ b/src/host/layer23/src/common/l1ctl.c @@ -47,6 +47,8 @@ #include #include +extern struct gsmtap_inst *gsmtap_inst; + static struct msgb *osmo_l1_alloc(uint8_t msg_type) { struct l1ctl_hdr *l1h; @@ -214,9 +216,9 @@ printf("Dropping frame with %u bit errors\n", dl->num_biterr); /* send CCCH data via GSMTAP */ gsmtap_chan_type = chantype_rsl2gsmtap(chan_type, dl->link_id); - gsmtap_sendmsg(ntohs(dl->band_arfcn), chan_ts, gsmtap_chan_type, chan_ss, - tm.fn, dl->rx_level-110, dl->snr, ccch->data, - sizeof(ccch->data)); + gsmtap_send(gsmtap_inst, ntohs(dl->band_arfcn), chan_ts, + gsmtap_chan_type, chan_ss, tm.fn, dl->rx_level-110, + dl->snr, ccch->data, sizeof(ccch->data)); /* determine LAPDm entity based on SACCH or not */ if (dl->link_id & 0x40) @@ -280,8 +282,8 @@ int l1ctl_tx_data_req(struct osmocom_ms *ms, struct msgb *msg, /* send copy via GSMTAP */ rsl_dec_chan_nr(chan_nr, &chan_type, &chan_ss, &chan_ts); gsmtap_chan_type = chantype_rsl2gsmtap(chan_type, link_id); - gsmtap_sendmsg(0|0x4000, chan_ts, gsmtap_chan_type, chan_ss, - 0, 127, 255, msg->l2h, msgb_l2len(msg)); + gsmtap_send(gsmtap_inst, 0|0x4000, chan_ts, gsmtap_chan_type, + chan_ss, 0, 127, 255, msg->l2h, msgb_l2len(msg)); /* prepend uplink info header */ l1i_ul = (struct l1ctl_info_ul *) msgb_push(msg, sizeof(*l1i_ul)); diff --git a/src/host/layer23/src/common/main.c b/src/host/layer23/src/common/main.c index 40e6a07be..a307222c6 100644 --- a/src/host/layer23/src/common/main.c +++ b/src/host/layer23/src/common/main.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -50,15 +51,18 @@ struct log_target *stderr_target; void *l23_ctx = NULL; + static char *layer2_socket_path = "/tmp/osmocom_l2"; static char *sap_socket_path = "/tmp/osmocom_sap"; struct llist_head ms_list; static struct osmocom_ms *ms = NULL; -static uint32_t gsmtap_ip = 0; +static char *gsmtap_ip = NULL; + unsigned short vty_port = 4247; int (*l23_app_work) (struct osmocom_ms *ms) = NULL; int (*l23_app_exit) (struct osmocom_ms *ms) = NULL; int quit = 0; +struct gsmtap_inst *gsmtap_inst; const char *openbsc_copyright = "%s" @@ -139,7 +143,6 @@ static void build_config(char **opt, struct option **option) static void handle_options(int argc, char **argv) { - struct sockaddr_in gsmtap; struct l23_app_info *app = l23_app_info(); struct option *long_options; char *opt; @@ -170,11 +173,7 @@ static void handle_options(int argc, char **argv) ms->test_arfcn = atoi(optarg); break; case 'i': - if (!inet_aton(optarg, &gsmtap.sin_addr)) { - perror("inet_aton"); - exit(2); - } - gsmtap_ip = ntohl(gsmtap.sin_addr.s_addr); + gsmtap_ip = optarg; break; case 'v': vty_port = atoi(optarg); @@ -263,11 +262,12 @@ int main(int argc, char **argv) exit(1); if (gsmtap_ip) { - rc = gsmtap_init(gsmtap_ip); - if (rc < 0) { + gsmtap_inst = gsmtap_source_init(gsmtap_ip, GSMTAP_UDP_PORT, 1); + if (!gsmtap_inst) { fprintf(stderr, "Failed during gsmtap_init()\n"); exit(1); } + gsmtap_source_add_sink(gsmtap_inst); } signal(SIGINT, sighandler); diff --git a/src/host/layer23/src/mobile/main.c b/src/host/layer23/src/mobile/main.c index 1f1566971..01c2b2e9e 100644 --- a/src/host/layer23/src/mobile/main.c +++ b/src/host/layer23/src/mobile/main.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -48,7 +49,8 @@ struct log_target *stderr_target; void *l23_ctx = NULL; struct llist_head ms_list; -static uint32_t gsmtap_ip = 0; +static char *gsmtap_ip = 0; +struct gsmtap_inst *gsmtap_inst = NULL; unsigned short vty_port = 4247; int debug_set = 0; char *config_dir = NULL; @@ -85,7 +87,6 @@ static void print_help() static void handle_options(int argc, char **argv) { - struct sockaddr_in gsmtap; while (1) { int option_index = 0, c; static struct option long_options[] = { @@ -108,11 +109,7 @@ static void handle_options(int argc, char **argv) exit(0); break; case 'i': - if (!inet_aton(optarg, &gsmtap.sin_addr)) { - perror("inet_aton"); - exit(2); - } - gsmtap_ip = ntohl(gsmtap.sin_addr.s_addr); + gsmtap_ip = optarg; break; case 'v': vty_port = atoi(optarg); @@ -171,11 +168,12 @@ int main(int argc, char **argv) log_set_log_level(stderr_target, LOGL_INFO); if (gsmtap_ip) { - rc = gsmtap_init(gsmtap_ip); - if (rc < 0) { + gsmtap_inst = gsmtap_source_init(gsmtap_ip, GSMTAP_UDP_PORT, 1); + if (!gsmtap_inst) { fprintf(stderr, "Failed during gsmtap_init()\n"); exit(1); } + gsmtap_source_add_sink(gsmtap_inst); } home = getenv("HOME");