aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorSimon Busch <morphis@gravedo.de>2012-08-30 17:48:01 +0200
committerSimon Busch <morphis@gravedo.de>2012-08-30 17:48:01 +0200
commit7b05368760fe11d57b108387d9c9cd0ce379a737 (patch)
treec29169012dc6a786398c95954943aa03e4c6a690 /tools
parentd9eae1106d51f69168b44cf81a46a604ad6fc8ef (diff)
downloadexternal_libsamsung-ipc-7b05368760fe11d57b108387d9c9cd0ce379a737.zip
external_libsamsung-ipc-7b05368760fe11d57b108387d9c9cd0ce379a737.tar.gz
external_libsamsung-ipc-7b05368760fe11d57b108387d9c9cd0ce379a737.tar.bz2
tools: drop not working forwarding tool
Diffstat (limited to 'tools')
-rw-r--r--tools/Makefile.am5
-rw-r--r--tools/forward.c186
2 files changed, 0 insertions, 191 deletions
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 173562a..3600f6f 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -8,13 +8,8 @@ AM_CFLAGS += -DDEVICE_IPC_V4
bin_PROGRAMS = \
modemctrl \
- samsung_ipc_forward \
$(NULL)
modemctrl_SOURCES = modemctrl.c
modemctrl_LDADD = $(top_builddir)/samsung-ipc/libsamsung-ipc.la
modemctrl_LDFLAGS =
-
-samsung_ipc_forward_SOURCES = forward.c
-samsung_ipc_forward_LDADD = $(top_builddir)/samsung-ipc/libsamsung-ipc.la
-modemctrl_LDFLAGS =
diff --git a/tools/forward.c b/tools/forward.c
deleted file mode 100644
index cf0eb78..0000000
--- a/tools/forward.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * This file is part of libsamsung-ipc.
- *
- * Copyright (C) 2012 Simon Busch <morphis@gravedo.de>
- *
- * libsamsung-ipc is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * libsamsung-ipc is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with libsamsung-ipc. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-
-#include <arpa/inet.h>
-#include <netinet/in.h>
-
-#include <fcntl.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <termios.h>
-#include <strings.h>
-#include <getopt.h>
-
-#define IOCTL_MODEM_SEND _IO('o', 0x23)
-#define IOCTL_MODEM_RECV _IO('o', 0x24)
-
-struct modem_io {
- uint32_t size;
- uint32_t id;
- uint32_t cmd;
- void *data;
-};
-
-void forward_data(int modem_fd, int remote_fd)
-{
- fd_set rfds;
- int rc, max_fd;
- unsigned char buf[4096];
-
- max_fd = modem_fd > remote_fd ? modem_fd + 1 : remote_fd + 1;
-
- while(1) {
- FD_ZERO(&rfds);
- FD_SET(modem_fd, &rfds);
- FD_SET(remote_fd, &rfds);
-
- rc = select(max_fd, &rfds, NULL, NULL, NULL);
- if (rc == -1) {
- perror("select()");
- break;
- }
- else if (rc) {
- if (FD_ISSET(modem_fd, &rfds)) {
- rc = ioctl(modem_fd, IOCTL_MODEM_RECV, &buf);
- if (rc < 0)
- break;
- ssize_t size = ((struct modem_io*) &buf)->size;
- printf("Sending from modem %ld\n", size);
- ssize_t written = write(remote_fd, &buf, size);
- }
- else if (FD_ISSET(remote_fd, &rfds)) {
- ssize_t size = read(remote_fd, &buf, sizeof(buf));
- if (size <= 0)
- break;
- printf("Sending from destination %ld\n", size);
- ssize_t written = ioctl(modem_fd, IOCTL_MODEM_SEND, &buf);
- }
- }
- }
-}
-
-int init_network_connection(int port)
-{
- int socket_fd = socket(PF_INET, SOCK_STREAM, 0);
- if (socket_fd < 0) {
- perror("Failed to create network socket");
- return EXIT_FAILURE;
- }
-
- int opt = 1;
- if (setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, (char*)&opt, sizeof(opt)) == -1) {
- perror("Warning: can't set SO_REUSEADDR");
- }
-
- struct sockaddr_in addr = { 0, };
- addr.sin_family = PF_INET;
- addr.sin_port = htons(port);
- addr.sin_addr.s_addr = htonl(INADDR_ANY);
-
- if (bind(socket_fd, (struct sockaddr*) &addr, sizeof(addr)) == -1) {
- perror("Error while binding socket");
- goto socket_init_failed;
- }
-
- if (listen(socket_fd, 1) == -1) {
- perror("Error while started listing on socket");
- goto socket_init_failed;
- }
-
- return socket_fd;
-
-socket_init_failed:
- close(socket_fd);
- return -1;
-}
-
-int main(int argc, char **argv)
-{
- opterr = 0;
- int option_index;
- int chr;
- char serial_node[30] = "\0";
- int network_port;
- int show_help = 0;
- int modem_fd = 0, socket_fd = 0;
-
- struct option opts[] = {
- { "node", required_argument, 0, 'n' },
- { "port", required_argument, 0, 'p' },
- { "help", no_argument, 0, 'h' },
- };
-
- while (1) {
- option_index = 0;
- chr = getopt_long(argc, argv, "n:p:h", opts, &option_index);
-
- if (chr == -1)
- break;
-
- switch (chr) {
- case 'h':
- show_help = 1;
- break;
- case 'n':
- snprintf(serial_node, 30, "%s", optarg);
- break;
- case 'p':
- network_port = atoi(optarg);
- break;
- default:
- break;
- }
- }
-
- if (show_help || network_port == 0 || serial_node[0] == 0) {
- printf("usage: samsung_ipc_forward -n <device node> -p <network port>\n");
- exit(1);
- }
-
- socket_fd = init_network_connection(network_port);
- if (socket_fd < 0)
- return EXIT_FAILURE;
-
- modem_fd = open(serial_node, O_RDWR | O_NOCTTY | O_NONBLOCK);
-
- int connection_fd = -1;
- struct sockaddr_in addr = { 0, };
- socklen_t length = sizeof(addr);
- while ((connection_fd = accept(socket_fd, (struct sockaddr*) &addr, &length)) >= 0) {
- printf("New connection from: '%s'\n", inet_ntoa(addr.sin_addr));
- forward_data(modem_fd, connection_fd);
- close(connection_fd);
- }
-
- close(modem_fd);
- close(socket_fd);
-
- return 0;
-
-socket_init_failed:
- close(socket_fd);
- return EXIT_FAILURE;
-}