diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-01-22 17:36:01 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2011-01-22 21:33:11 +0100 |
commit | ddf8eae7da02b20dd4310af9428a1eb18b1dd57d (patch) | |
tree | 530001939877c4e7a75adf02d33eb5f6a8c2b4dd | |
parent | c6bfa27b5e56845491c6d03406d4dba65d86095f (diff) |
pcap: Run all pcap operations through one method
-rw-r--r-- | include/bsc_data.h | 3 | ||||
-rw-r--r-- | include/mtp_pcap.h | 4 | ||||
-rw-r--r-- | src/link_udp.c | 6 | ||||
-rw-r--r-- | src/links.c | 9 | ||||
-rw-r--r-- | src/sctp_m2ua.c | 6 |
5 files changed, 18 insertions, 10 deletions
diff --git a/include/bsc_data.h b/include/bsc_data.h index fdd35ec..8c827e2 100644 --- a/include/bsc_data.h +++ b/include/bsc_data.h @@ -160,4 +160,7 @@ int link_clear_all(struct mtp_link_set *); /* MGCP */ void mgcp_forward(struct bsc_data *bsc, const uint8_t *data, unsigned int length); +/* pcap */ +int mtp_handle_pcap(struct mtp_link *, const uint8_t *data, int length); + #endif diff --git a/include/mtp_pcap.h b/include/mtp_pcap.h index 5d1f97e..30a5ea6 100644 --- a/include/mtp_pcap.h +++ b/include/mtp_pcap.h @@ -1,6 +1,6 @@ /* - * (C) 2010 by Holger Hans Peter Freyther <zecke@selfish.org> - * (C) 2010 by On-Waves + * (C) 2010-2011 by Holger Hans Peter Freyther <zecke@selfish.org> + * (C) 2010-2011 by On-Waves * All Rights Reserved * * This program is free software: you can redistribute it and/or modify diff --git a/src/link_udp.c b/src/link_udp.c index f7c6703..a9b2d9b 100644 --- a/src/link_udp.c +++ b/src/link_udp.c @@ -61,8 +61,7 @@ static int udp_write_cb(struct bsc_fd *fd, struct msgb *msg) } LOGP(DINP, LOGL_DEBUG, "Sending MSU: %s\n", hexdump(msg->data, msg->len)); - if (link->base.pcap_fd >= 0) - mtp_pcap_write_msu(link->base.pcap_fd, msg->l2h, msgb_l2len(msg)); + mtp_handle_pcap(&link->base, msg->l2h, msgb_l2len(msg)); /* the assumption is we have connected the socket to the remote */ rc = sendto(fd->fd, msg->data, msg->len, 0, @@ -137,8 +136,7 @@ static int udp_read_cb(struct bsc_fd *fd) msg->l2h = msgb_put(msg, length); LOGP(DINP, LOGL_DEBUG, "MSU data on: %p data %s.\n", link, hexdump(msg->data, msg->len)); - if (link->pcap_fd >= 0) - mtp_pcap_write_msu(link->pcap_fd, msg->l2h, msgb_l2len(msg)); + mtp_handle_pcap(link, msg->l2h, msgb_l2len(msg)); mtp_link_set_data(link, msg); exit: diff --git a/src/links.c b/src/links.c index 7a114fb..1acc8bf 100644 --- a/src/links.c +++ b/src/links.c @@ -23,6 +23,7 @@ #include <bsc_data.h> #include <cellmgr_debug.h> #include <mtp_data.h> +#include <mtp_pcap.h> #include <snmp_mtp.h> #include <osmocore/talloc.h> @@ -175,3 +176,11 @@ int link_clear_all(struct mtp_link_set *set) lnk->clear_queue(lnk); return 0; } + +int mtp_handle_pcap(struct mtp_link *link, const uint8_t *data, int len) +{ + if (link->pcap_fd < 0) + return 0; + mtp_pcap_write_msu(link->pcap_fd, data, len); + return 0; +} diff --git a/src/sctp_m2ua.c b/src/sctp_m2ua.c index d3a64c9..3f67665 100644 --- a/src/sctp_m2ua.c +++ b/src/sctp_m2ua.c @@ -327,8 +327,7 @@ static int m2ua_handle_data(struct sctp_m2ua_conn *conn, memcpy(msg->l2h, data->dat, data->len); link = &conn->trans->base; - if (link->pcap_fd >= 0) - mtp_pcap_write_msu(link->pcap_fd, msg->l2h, msgb_l2len(msg)); + mtp_handle_pcap(link, msg->l2h, msgb_l2len(msg)); mtp_link_set_data(link, msg); msgb_free(msg); @@ -470,8 +469,7 @@ static int sctp_m2ua_write(struct mtp_link *link, struct msgb *msg) if (!m2ua) return -1; - if (link->pcap_fd >= 0) - mtp_pcap_write_msu(link->pcap_fd, msg->data, msg->len); + mtp_handle_pcap(link, msg->data, msg->len); m2ua->hdr.msg_class = M2UA_CLS_MAUP; m2ua->hdr.msg_type = M2UA_MAUP_DATA; |