summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/watchdog/watchdog
diff options
context:
space:
mode:
authorSaul Wold <sgw@linux.intel.com>2014-11-06 16:19:44 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-11-09 10:21:22 +0000
commitc58237560dcb20283b27a816ffbafa0818ffc98e (patch)
tree9568ac202bc1a797652a3c6d9ce805c2ca59be50 /meta/recipes-extended/watchdog/watchdog
parentf5ecb7548163ed80bb0c55f32cee3644ac8a0531 (diff)
downloadpoky-c58237560dcb20283b27a816ffbafa0818ffc98e.tar.gz
watchdog: Upgrade to 5.14
Move the patches from generic files to watchdog Rebased the fix-ping due to code reorg on the source (From OE-Core rev: fb2e1fd7d2df68d02f5da7dbf4390ea03e7eafdb) Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-extended/watchdog/watchdog')
-rw-r--r--meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch79
-rw-r--r--meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch27
2 files changed, 106 insertions, 0 deletions
diff --git a/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch b/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch
new file mode 100644
index 0000000000..14ab9c56ab
--- /dev/null
+++ b/meta/recipes-extended/watchdog/watchdog/fix-ping-failure.patch
@@ -0,0 +1,79 @@
1Fix ping mode failure
2
3Upstream-Status: Pending
4
5When watchdog works on ping mode, the system will be rebooted since
6watchdog can not receive the expected ECOREPLY on a setting interval.
7
8Ping mode uses a raw socket to send a ECO packet, then uses select()
9to wait and recvfrom() to receive the ECOREPLY packet, if select()
10shows the data is ready, and the data is not the expected ECOREPLY,
11and waiting time is not overdue, it will continue use select() and
12recvfrom().
13
14Problem is that the raw socket can receive any icmp packets, if we do
15not set filters, and there are many icmp packets on socket, this
16program will not find its interested ECOREPLY packet in a special
17interval, which makes the ping mode fail.
18
19
20Other program is that watchdog sometime can not reach the call of
21recvfrom to try to receive packets since tv_sec of struct timeval
22of select parameter is 0.
23
24The timeout of select() is the result of ping interval minusing the
25time of calling gettimeofday spending, when ping interval is 1 second,
26and the call of gettimeofday() spends several useconds, the tv_sec of
27struct timeval of select parameter must be 0, at that condition, we
28should it is valid of tv_sec of struct timeval of select parameter be 0
29
30Signed-off-by: Roy.Li <rongqing.li@windriver.com>
31---
32 src/net.c | 2 +-
33 src/watchdog.c | 5 ++++-
34 2 files changed, 5 insertions(+), 2 deletions(-)
35
36Index: watchdog-5.14/src/watchdog.c
37===================================================================
38--- watchdog-5.14.orig/src/watchdog.c
39+++ watchdog-5.14/src/watchdog.c
40@@ -24,6 +24,7 @@
41 #include <sys/types.h>
42 #include <sys/ioctl.h>
43 #include <linux/oom.h>
44+#include <linux/icmp.h>
45 #include <linux/watchdog.h>
46 #include <string.h>
47
48Index: watchdog-5.14/src/net.c
49===================================================================
50--- watchdog-5.14.orig/src/net.c
51+++ watchdog-5.14/src/net.c
52@@ -11,7 +11,8 @@
53 #include <errno.h>
54 #include <sys/time.h>
55 #include <netinet/ip.h>
56-#include <netinet/ip_icmp.h>
57+#include <linux/icmp.h>
58+//#include <netinet/ip_icmp.h>
59 #include <fcntl.h>
60 #include <string.h>
61 #include <unistd.h> /* for gethostname() etc */
62@@ -179,6 +180,9 @@ int open_netcheck(struct list *tlist)
63 {
64 struct list *act;
65 int hold = 0;
66+ struct icmp_filter filt;
67+ filt.data = ~(1<<ICMP_ECHOREPLY);
68+
69
70 if (tlist != NULL) {
71 for (act = tlist; act != NULL; act = act->next) {
72@@ -202,6 +206,7 @@ int open_netcheck(struct list *tlist)
73 fatal_error(EX_SYSERR, "error opening socket (%s)", strerror(errno));
74 }
75
76+ setsockopt(net->sock_fp, SOL_RAW, ICMP_FILTER, (char*)&filt, sizeof(filt));
77 /* this is necessary for broadcast pings to work */
78 (void)setsockopt(net->sock_fp, SOL_SOCKET, SO_BROADCAST, (char *)&hold, sizeof(hold));
79
diff --git a/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch b/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch
new file mode 100644
index 0000000000..2fad3a112f
--- /dev/null
+++ b/meta/recipes-extended/watchdog/watchdog/fixsepbuild.patch
@@ -0,0 +1,27 @@
1Fix out of tree build support:
2
3| installing /etc/watchdog.conf
4| /bin/mkdir -p '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man5'
5| /bin/mkdir -p '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man8'
6| /usr/bin/install -c -m 644 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/watchdog.conf.5 '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man5'
7| /usr/bin/install -c -m 644 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/watchdog.8 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/wd_keepalive.8 /media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/watchdog-5.13/wd_identify.8 '/media/build1/poky/build/tmp/work/i586-poky-linux/watchdog/5.13-r0/image/usr/share/man/man8'
8| /usr/bin/install: cannot stat `watchdog.conf': No such file or directory
9| make[2]: *** [install-etc-local] Error 1
10
11Upstream-Status: Pending
12
13RP 2013/03/21
14
15Index: watchdog-5.13/Makefile.am
16===================================================================
17--- watchdog-5.13.orig/Makefile.am 2013-02-01 11:15:44.000000000 +0000
18+++ watchdog-5.13/Makefile.am 2013-03-21 11:59:35.637139031 +0000
19@@ -16,7 +16,7 @@
20 else \
21 echo "installing $(CONFIG_FILENAME)"; \
22 $(mkinstalldirs) `dirname $(DESTDIR)$(CONFIG_FILENAME)`; \
23- $(INSTALL_DATA) watchdog.conf $(DESTDIR)$(CONFIG_FILENAME); \
24+ $(INSTALL_DATA) $(srcdir)/watchdog.conf $(DESTDIR)$(CONFIG_FILENAME); \
25 fi
26
27 install-data-local: install-etc-local