pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/39200?usp=email )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: pcap-server: Resolve real path of pcap file before opening
......................................................................
pcap-server: Resolve real path of pcap file before opening
This means we always end up with a canonicalized absolute path.
While at it, also valdiate that we can indeed resolve the path (eg. it
exists and is reachable with current process permissions) during
startup.
It is preferrable to resolve it everytime a file is opened, this allows
the user to eg. change the base-path to a different symlink it they wish
to change the base-path for new pcaps without restarting osmo-pcap.
Change-Id: I8d161010dc8b480dd4cf90e19ca28a77914a50ad
---
M include/osmo-pcap/osmo_pcap_server.h
M src/osmo_server_network.c
M src/osmo_server_vty.c
3 files changed, 19 insertions(+), 4 deletions(-)
Approvals:
fixeria: Looks good to me, approved
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
diff --git a/include/osmo-pcap/osmo_pcap_server.h b/include/osmo-pcap/osmo_pcap_server.h
index 0a43a69..50bb121 100644
--- a/include/osmo-pcap/osmo_pcap_server.h
+++ b/include/osmo-pcap/osmo_pcap_server.h
@@ -87,6 +87,7 @@
/* Remote connection */
struct osmo_wqueue rem_wq;
int local_fd;
+ /* canonicalized absolute pathname of pcap file we write to */
char *curr_filename;
/* pcap stuff */
diff --git a/src/osmo_server_network.c b/src/osmo_server_network.c
index 0b0073f..8747091 100644
--- a/src/osmo_server_network.c
+++ b/src/osmo_server_network.c
@@ -166,6 +166,7 @@
time_t now = time(NULL);
struct tm tm;
int rc;
+ char *real_base_path;
osmo_pcap_server_close_trace(conn);
@@ -178,11 +179,17 @@
}
localtime_r(&now, &tm);
+ real_base_path = realpath(conn->server->base_path, NULL);
+ if (!real_base_path) {
+ LOGP(DSERVER, LOGL_ERROR, "Failed to resolve real path '%s': %s\n",
+ conn->server->base_path, strerror(errno));
+ return;
+ }
conn->curr_filename = talloc_asprintf(conn, "%s/trace-%s-%d%.2d%.2d_%.2d%.2d%.2d.pcap",
- conn->server->base_path, conn->name,
- tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
- tm.tm_hour, tm.tm_min, tm.tm_sec);
-
+ real_base_path, conn->name,
+ tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+ tm.tm_hour, tm.tm_min, tm.tm_sec);
+ free(real_base_path);
if (!conn->curr_filename) {
LOGP(DSERVER, LOGL_ERROR, "Failed to assemble filename for %s.\n", conn->name);
return;
diff --git a/src/osmo_server_vty.c b/src/osmo_server_vty.c
index c3014c9..ee3f995 100644
--- a/src/osmo_server_vty.c
+++ b/src/osmo_server_vty.c
@@ -148,6 +148,13 @@
"base-path PATH",
"Base path for log files\n" "Path\n")
{
+ /* Validate we can resolve path: */
+ char *tmp = realpath(argv[0], NULL);
+ if (!tmp) {
+ vty_out(vty, "%% Failed to resolve path '%s': %s%s", argv[0], strerror(errno), VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ free(tmp);
osmo_talloc_replace_string(pcap_server, &pcap_server->base_path, argv[0]);
return CMD_SUCCESS;
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcap/+/39200?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-pcap
Gerrit-Branch: master
Gerrit-Change-Id: I8d161010dc8b480dd4cf90e19ca28a77914a50ad
Gerrit-Change-Number: 39200
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/39192?usp=email )
Change subject: pcap-server: remove unneeded check for null base_path
......................................................................
pcap-server: remove unneeded check for null base_path
It cannot be ever NULL. It is set to a non-null path during alloc(), and
it can only be replaced with another string through VTY.
Change-Id: I2f503f6f9af35d6ae6fbd03e85cade4f0eb93df2
---
M src/osmo_server_vty.c
1 file changed, 1 insertion(+), 2 deletions(-)
Approvals:
pespin: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/src/osmo_server_vty.c b/src/osmo_server_vty.c
index 6a44da6..c3014c9 100644
--- a/src/osmo_server_vty.c
+++ b/src/osmo_server_vty.c
@@ -96,8 +96,7 @@
vty_out(vty, "server%s", VTY_NEWLINE);
- if (pcap_server->base_path)
- vty_out(vty, " base-path %s%s", pcap_server->base_path, VTY_NEWLINE);
+ vty_out(vty, " base-path %s%s", pcap_server->base_path, VTY_NEWLINE);
vty_out(vty, " file-permission-mask 0%o%s", pcap_server->permission_mask, VTY_NEWLINE);
if (pcap_server->addr)
vty_out(vty, " server ip %s%s", pcap_server->addr, VTY_NEWLINE);
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcap/+/39192?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-pcap
Gerrit-Branch: master
Gerrit-Change-Id: I2f503f6f9af35d6ae6fbd03e85cade4f0eb93df2
Gerrit-Change-Number: 39192
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/39176?usp=email )
(
2 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: pcap-client: Allow recording on several interfaces
......................................................................
pcap-client: Allow recording on several interfaces
This commit enables basic support for multi-interface capturing.
The transmitted data to the osmo-pcap-server is not yet in pcapng
format, which means no information regarding the iface it was captured
on is provided when opening the resulting pcap file.
Related: SYS#5822
Change-Id: I082b0bd38cf1829937c5e643f0ee31f9d56a07a7
---
M src/osmo_client_vty.c
1 file changed, 1 insertion(+), 7 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
diff --git a/src/osmo_client_vty.c b/src/osmo_client_vty.c
index c976a1a..009c735 100644
--- a/src/osmo_client_vty.c
+++ b/src/osmo_client_vty.c
@@ -170,14 +170,8 @@
PCAP_STRING "the device to filter\n" "device name\n")
{
struct osmo_pcap_handle *ph = osmo_client_find_handle(pcap_client, argv[0]);
- if (!ph) {
- /* Only allow max one for now:*/
- if (llist_count(&pcap_client->handles) > 0) {
- vty_out(vty, "Only one 'pcap device' allowed! Remove the old one with 'no pcap device' first!%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
+ if (!ph)
osmo_pcap_handle_alloc(pcap_client, argv[0]);
- }
return CMD_SUCCESS;
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcap/+/39176?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-pcap
Gerrit-Branch: master
Gerrit-Change-Id: I082b0bd38cf1829937c5e643f0ee31f9d56a07a7
Gerrit-Change-Number: 39176
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>