summaryrefslogtreecommitdiff
path: root/polux/application/busybox/util-linux/clean.c
diff options
context:
space:
mode:
Diffstat (limited to 'polux/application/busybox/util-linux/clean.c')
-rw-r--r--polux/application/busybox/util-linux/clean.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/polux/application/busybox/util-linux/clean.c b/polux/application/busybox/util-linux/clean.c
new file mode 100644
index 0000000000..51b46449fe
--- /dev/null
+++ b/polux/application/busybox/util-linux/clean.c
@@ -0,0 +1,50 @@
+#include "plc_ioctl.h"
+
+#include <net/if.h>
+#include "libbb.h"
+
+int send_ioctl(union plcbox_t *plcbox)
+{
+ int fd;
+ struct ifreq ifr;
+
+ // Creating a socket
+ fd=socket(AF_INET, SOCK_DGRAM, 0);
+
+ memset(&ifr,0,sizeof(struct ifreq));
+ // Initialisation of the interface used for communication
+ strcpy(ifr.ifr_name, "plc0");
+
+ ifr.ifr_data = (char*)plcbox;
+
+ // Send plcbox trough ioctl channel
+ if (ioctl(fd, SIOCPLCBOX, &ifr) < 0)
+ {
+ printf("Shell Error: ioctl Error\n");
+ return -1;
+ }
+
+ /* printf("Return val is %s\n",(char*)ifr.ifr_data); */
+
+ // Closing connection
+ if(close(fd) < 0)
+ {
+ printf("Shell Error: close error\n");
+ return -1;
+ }
+ return(1);
+}
+
+int clean_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int clean_main(int argc, char **argv)
+{
+ union plcbox_t *plcbox;
+
+ plcbox = (union plcbox_t*)malloc(sizeof(union plcbox_t));
+
+ plcbox->iocmd = IOCCMD_CLEAN;
+
+ send_ioctl(plcbox);
+ free(plcbox);
+ return 0;
+}