busybox: clean up patch fuzz
[openwrt/openwrt.git] / package / utils / busybox / patches / 210-add_netmsg_util.patch
1 --- /dev/null
2 +++ b/networking/netmsg.c
3 @@ -0,0 +1,76 @@
4 +/*
5 + * Copyright (C) 2006 Felix Fietkau <nbd@nbd.name>
6 + *
7 + * This is free software, licensed under the GNU General Public License v2.
8 + */
9 +
10 +//config:config NETMSG
11 +//config: bool "netmsg"
12 +//config: default n
13 +//config: help
14 +//config: simple program for sending udp broadcast messages
15 +
16 +//applet:IF_NETMSG(APPLET(netmsg, BB_DIR_BIN, BB_SUID_REQUIRE))
17 +
18 +//kbuild:lib-$(CONFIG_NETMSG) += netmsg.o
19 +
20 +//usage:#define netmsg_trivial_usage NOUSAGE_STR
21 +//usage:#define netmsg_full_usage ""
22 +
23 +#include <sys/types.h>
24 +#include <sys/socket.h>
25 +#include <netinet/in.h>
26 +#include <netdb.h>
27 +#include <stdio.h>
28 +#include <stdlib.h>
29 +#include <string.h>
30 +#include "busybox.h"
31 +
32 +#ifndef CONFIG_NETMSG
33 +int main(int argc, char **argv)
34 +#else
35 +int netmsg_main(int argc, char **argv)
36 +#endif
37 +{
38 + int s;
39 + struct sockaddr_in addr;
40 + int optval = 1;
41 + unsigned char buf[1001];
42 +
43 + if (argc != 3) {
44 + fprintf(stderr, "usage: %s <ip> \"<message>\"\n", argv[0]);
45 + exit(1);
46 + }
47 +
48 + if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
49 + perror("Opening socket");
50 + exit(1);
51 + }
52 +
53 + memset(&addr, 0, sizeof(addr));
54 + addr.sin_family = AF_INET;
55 + addr.sin_addr.s_addr = inet_addr(argv[1]);
56 + addr.sin_port = htons(0x1337);
57 +
58 + memset(buf, 0, 1001);
59 + buf[0] = 0xde;
60 + buf[1] = 0xad;
61 +
62 + strncpy(buf + 2, argv[2], 998);
63 +
64 + if (setsockopt (s, SOL_SOCKET, SO_BROADCAST, (caddr_t) &optval, sizeof (optval)) < 0) {
65 + perror("setsockopt()");
66 + goto fail;
67 + }
68 +
69 + if (sendto(s, buf, 1001, 0, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
70 + perror("sendto()");
71 + goto fail;
72 + }
73 +
74 + return 0;
75 +
76 +fail:
77 + close(s);
78 + exit(1);
79 +}