| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- --- a/include/applets.h
- +++ b/include/applets.h
- @@ -257,6 +257,7 @@ USE_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_
- USE_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_NEVER))
- USE_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- +USE_NETMSG(APPLET(netmsg, _BB_DIR_BIN, _BB_SUID_ALWAYS))
- USE_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_NEVER))
- USE_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
- --- a/include/usage.h
- +++ b/include/usage.h
- @@ -2815,6 +2815,9 @@
-
- #endif
-
- +#define netmsg_trivial_usage NOUSAGE_STR
- +#define netmsg_full_usage ""
- +
- #define netstat_trivial_usage \
- "[-laentuwxr"USE_FEATURE_NETSTAT_WIDE("W")"]"
- #define netstat_full_usage "\n\n" \
- --- a/networking/Config.in
- +++ b/networking/Config.in
- @@ -602,6 +602,12 @@ config NC
- A simple Unix utility which reads and writes data across network
- connections.
-
- +config NETMSG
- + bool "netmsg"
- + default n
- + help
- + simple program for sending udp broadcast messages
- +
- config NC_SERVER
- bool "Netcat server options (-l)"
- default n
- --- a/networking/Kbuild
- +++ b/networking/Kbuild
- @@ -24,6 +24,7 @@ lib-$(CONFIG_IP) += ip.o
- lib-$(CONFIG_IPCALC) += ipcalc.o
- lib-$(CONFIG_NAMEIF) += nameif.o
- lib-$(CONFIG_NC) += nc.o
- +lib-$(CONFIG_NETMSG) += netmsg.o
- lib-$(CONFIG_NETSTAT) += netstat.o
- lib-$(CONFIG_NSLOOKUP) += nslookup.o
- lib-$(CONFIG_PING) += ping.o
- --- /dev/null
- +++ b/networking/netmsg.c
- @@ -0,0 +1,63 @@
- +/*
- + * Copyright (C) 2006 Felix Fietkau <[email protected]>
- + *
- + * This is free software, licensed under the GNU General Public License v2.
- + */
- +#include <sys/types.h>
- +#include <sys/socket.h>
- +#include <netinet/in.h>
- +#include <netdb.h>
- +#include <stdio.h>
- +#include <stdlib.h>
- +#include <string.h>
- +#include "busybox.h"
- +
- +
- +#ifndef CONFIG_NETMSG
- +int main(int argc, char **argv)
- +#else
- +int netmsg_main(int argc, char **argv)
- +#endif
- +{
- + int s;
- + struct sockaddr_in addr;
- + int optval = 1;
- + unsigned char buf[1001];
- +
- + if (argc != 3) {
- + fprintf(stderr, "usage: %s <ip> \"<message>\"\n", argv[0]);
- + exit(1);
- + }
- +
- + if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- + perror("Opening socket");
- + exit(1);
- + }
- +
- + memset(&addr, 0, sizeof(addr));
- + addr.sin_family = AF_INET;
- + addr.sin_addr.s_addr = inet_addr(argv[1]);
- + addr.sin_port = htons(0x1337);
- +
- + memset(buf, 0, 1001);
- + buf[0] = 0xde;
- + buf[1] = 0xad;
- +
- + strncpy(buf + 2, argv[2], 998);
- +
- + if (setsockopt (s, SOL_SOCKET, SO_BROADCAST, (caddr_t) &optval, sizeof (optval)) < 0) {
- + perror("setsockopt()");
- + goto fail;
- + }
- +
- + if (sendto(s, buf, 1001, 0, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
- + perror("sendto()");
- + goto fail;
- + }
- +
- + return 0;
- +
- +fail:
- + close(s);
- + exit(1);
- +}
|