... | ... |
@@ -968,7 +968,8 @@ int data_safeset16(mdata *data, uint16_t val) |
968 | 968 |
if(data->head.szdata + sizeof(uint16_t) > MAKUO_BUFFER_SIZE){ |
969 | 969 |
return(-1); |
970 | 970 |
} |
971 |
- *(uint16_t *)(data->data + data->head.szdata) = htons(val); |
|
971 |
+ val = htons(val); |
|
972 |
+ memcpy((void *)(data->data + data->head.szdata), (void *)(&val), sizeof(val)); |
|
972 | 973 |
data->head.szdata += sizeof(uint16_t); |
973 | 974 |
return(0); |
974 | 975 |
} |
... | ... |
@@ -978,7 +979,8 @@ int data_safeset32(mdata *data, uint32_t val) |
978 | 978 |
if(data->head.szdata + sizeof(uint32_t) > MAKUO_BUFFER_SIZE){ |
979 | 979 |
return(-1); |
980 | 980 |
} |
981 |
- *(uint32_t *)(data->data + data->head.szdata) = htonl(val); |
|
981 |
+ val = htonl(val); |
|
982 |
+ memcpy((void *)(data->data + data->head.szdata), (void *)(&val), sizeof(val)); |
|
982 | 983 |
data->head.szdata += sizeof(uint32_t); |
983 | 984 |
return(0); |
984 | 985 |
} |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
#! /bin/sh |
2 | 2 |
# Guess values for system-dependent variables and create Makefiles. |
3 |
-# Generated by GNU Autoconf 2.61 for makuosan 1.2.2. |
|
3 |
+# Generated by GNU Autoconf 2.61 for makuosan 1.2.2-rc1. |
|
4 | 4 |
# |
5 | 5 |
# Report bugs to <info-makuosan@klab.jp>. |
6 | 6 |
# |
... | ... |
@@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} |
574 | 574 |
# Identity of this package. |
575 | 575 |
PACKAGE_NAME='makuosan' |
576 | 576 |
PACKAGE_TARNAME='makuosan' |
577 |
-PACKAGE_VERSION='1.2.2' |
|
578 |
-PACKAGE_STRING='makuosan 1.2.2' |
|
577 |
+PACKAGE_VERSION='1.2.2-rc1' |
|
578 |
+PACKAGE_STRING='makuosan 1.2.2-rc1' |
|
579 | 579 |
PACKAGE_BUGREPORT='info-makuosan@klab.jp' |
580 | 580 |
|
581 | 581 |
ac_unique_file="makuosan.c" |
... | ... |
@@ -1209,7 +1209,7 @@ if test "$ac_init_help" = "long"; then |
1209 | 1209 |
# Omit some internal or obsolete options to make the list less imposing. |
1210 | 1210 |
# This message is too long to be a string in the A/UX 3.1 sh. |
1211 | 1211 |
cat <<_ACEOF |
1212 |
-\`configure' configures makuosan 1.2.2 to adapt to many kinds of systems. |
|
1212 |
+\`configure' configures makuosan 1.2.2-rc1 to adapt to many kinds of systems. |
|
1213 | 1213 |
|
1214 | 1214 |
Usage: $0 [OPTION]... [VAR=VALUE]... |
1215 | 1215 |
|
... | ... |
@@ -1275,7 +1275,7 @@ fi |
1275 | 1275 |
|
1276 | 1276 |
if test -n "$ac_init_help"; then |
1277 | 1277 |
case $ac_init_help in |
1278 |
- short | recursive ) echo "Configuration of makuosan 1.2.2:";; |
|
1278 |
+ short | recursive ) echo "Configuration of makuosan 1.2.2-rc1:";; |
|
1279 | 1279 |
esac |
1280 | 1280 |
cat <<\_ACEOF |
1281 | 1281 |
|
... | ... |
@@ -1360,7 +1360,7 @@ fi |
1360 | 1360 |
test -n "$ac_init_help" && exit $ac_status |
1361 | 1361 |
if $ac_init_version; then |
1362 | 1362 |
cat <<\_ACEOF |
1363 |
-makuosan configure 1.2.2 |
|
1363 |
+makuosan configure 1.2.2-rc1 |
|
1364 | 1364 |
generated by GNU Autoconf 2.61 |
1365 | 1365 |
|
1366 | 1366 |
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
... | ... |
@@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF |
1374 | 1374 |
This file contains any messages produced by compilers while |
1375 | 1375 |
running configure, to aid debugging if configure makes a mistake. |
1376 | 1376 |
|
1377 |
-It was created by makuosan $as_me 1.2.2, which was |
|
1377 |
+It was created by makuosan $as_me 1.2.2-rc1, which was |
|
1378 | 1378 |
generated by GNU Autoconf 2.61. Invocation command line was |
1379 | 1379 |
|
1380 | 1380 |
$ $0 $@ |
... | ... |
@@ -2065,7 +2065,7 @@ fi |
2065 | 2065 |
|
2066 | 2066 |
# Define the identity of the package. |
2067 | 2067 |
PACKAGE='makuosan' |
2068 |
- VERSION='1.2.2' |
|
2068 |
+ VERSION='1.2.2-rc1' |
|
2069 | 2069 |
|
2070 | 2070 |
|
2071 | 2071 |
cat >>confdefs.h <<_ACEOF |
... | ... |
@@ -9206,7 +9206,7 @@ exec 6>&1 |
9206 | 9206 |
# report actual input values of CONFIG_FILES etc. instead of their |
9207 | 9207 |
# values after options handling. |
9208 | 9208 |
ac_log=" |
9209 |
-This file was extended by makuosan $as_me 1.2.2, which was |
|
9209 |
+This file was extended by makuosan $as_me 1.2.2-rc1, which was |
|
9210 | 9210 |
generated by GNU Autoconf 2.61. Invocation command line was |
9211 | 9211 |
|
9212 | 9212 |
CONFIG_FILES = $CONFIG_FILES |
... | ... |
@@ -9263,7 +9263,7 @@ Report bugs to <bug-autoconf@gnu.org>." |
9263 | 9263 |
_ACEOF |
9264 | 9264 |
cat >>$CONFIG_STATUS <<_ACEOF |
9265 | 9265 |
ac_cs_version="\\ |
9266 |
-makuosan config.status 1.2.2 |
|
9266 |
+makuosan config.status 1.2.2-rc1 |
|
9267 | 9267 |
configured by $0, generated by GNU Autoconf 2.61, |
9268 | 9268 |
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" |
9269 | 9269 |
|
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
# -*- Autoconf -*- |
2 | 2 |
# Process this file with autoconf to produce a configure script. |
3 | 3 |
AC_PREREQ(2.61) |
4 |
-AC_INIT(makuosan, 1.2.2, info-makuosan@klab.jp) |
|
4 |
+AC_INIT(makuosan, 1.2.2-rc1, info-makuosan@klab.jp) |
|
5 | 5 |
AM_INIT_AUTOMAKE |
6 | 6 |
AC_CONFIG_SRCDIR([makuosan.c]) |
7 | 7 |
AC_CONFIG_HEADER([config.h]) |
... | ... |
@@ -197,26 +197,28 @@ static void minit_option_getenv() |
197 | 197 |
struct group *gr; |
198 | 198 |
|
199 | 199 |
if(env=getenv("MAKUOSAN_BASE")){ |
200 |
- realpath(env, moption.base_dir); |
|
200 |
+ if(*env){ |
|
201 |
+ realpath(env, moption.base_dir); |
|
202 |
+ } |
|
201 | 203 |
} |
202 | 204 |
if(env=getenv("MAKUOSAN_PORT")){ |
203 |
- if(atoi(env)){ |
|
205 |
+ if(*env && atoi(env)){ |
|
204 | 206 |
moption.maddr.sin_port = htons(atoi(env)); |
205 | 207 |
moption.laddr.sin_port = htons(atoi(env)); |
206 | 208 |
} |
207 | 209 |
} |
208 | 210 |
if(env=getenv("MAKUOSAN_USER")){ |
209 |
- if(minit_option_setuid(env)){ |
|
211 |
+ if(*env && minit_option_setuid(env)){ |
|
210 | 212 |
exit(1); |
211 | 213 |
} |
212 | 214 |
} |
213 | 215 |
if(env=getenv("MAKUOSAN_GROUP")){ |
214 |
- if(minit_option_setgid(env)){ |
|
216 |
+ if(*env && minit_option_setgid(env)){ |
|
215 | 217 |
exit(1); |
216 | 218 |
} |
217 | 219 |
} |
218 | 220 |
if(env=getenv("MAKUOSAN_GROUPS")){ |
219 |
- if(minit_option_setgids(env)){ |
|
221 |
+ if(*env && minit_option_setgids(env)){ |
|
220 | 222 |
exit(1); |
221 | 223 |
} |
222 | 224 |
} |
... | ... |
@@ -556,8 +558,10 @@ static void minit_setguid() |
556 | 556 |
static void minit_daemonize() |
557 | 557 |
{ |
558 | 558 |
int pid; |
559 |
- if(moption.dontfork) |
|
559 |
+ if(moption.dontfork){ |
|
560 |
+ lprintf(0, "pid : %d\n", getpid()); |
|
560 | 561 |
return; |
562 |
+ } |
|
561 | 563 |
|
562 | 564 |
pid = fork(); |
563 | 565 |
if(pid == -1){ |
... | ... |
@@ -572,8 +576,10 @@ static void minit_daemonize() |
572 | 572 |
fprintf(stderr, "%s: can't fork()\n", __func__); |
573 | 573 |
exit(1); |
574 | 574 |
} |
575 |
- if(pid) |
|
575 |
+ if(pid){ |
|
576 |
+ lprintf(0, "pid : %d\n",pid); |
|
576 | 577 |
_exit(0); |
578 |
+ } |
|
577 | 579 |
|
578 | 580 |
/*----- daemon process -----*/ |
579 | 581 |
close(2); |
... | ... |
@@ -97,8 +97,8 @@ static int mrecv_packet(int s, mdata *data, struct sockaddr_in *addr) |
97 | 97 |
data->head.flags = ntohs(data->head.flags); |
98 | 98 |
data->head.reqid = ntohl(data->head.reqid); |
99 | 99 |
data->head.seqno = ntohl(data->head.seqno); |
100 |
- data->head.maddr = ntohl(data->head.maddr); |
|
101 |
- data->head.mport = ntohs(data->head.mport); |
|
100 |
+ data->head.maddr = data->head.maddr; |
|
101 |
+ data->head.mport = data->head.mport; |
|
102 | 102 |
data->head.error = ntohl(data->head.error); |
103 | 103 |
if(data->head.maddr != moption.maddr.sin_addr.s_addr){ |
104 | 104 |
continue; /* other group packet */ |
... | ... |
@@ -91,8 +91,8 @@ static int msend_packet(int s, mdata *data, struct sockaddr_in *addr) |
91 | 91 |
senddata.head.flags = htons(senddata.head.flags); |
92 | 92 |
senddata.head.reqid = htonl(senddata.head.reqid); |
93 | 93 |
senddata.head.seqno = htonl(senddata.head.seqno); |
94 |
- senddata.head.maddr = htonl(senddata.head.maddr); |
|
95 |
- senddata.head.mport = htons(senddata.head.mport); |
|
94 |
+ senddata.head.maddr = senddata.head.maddr; |
|
95 |
+ senddata.head.mport = senddata.head.mport; |
|
96 | 96 |
senddata.head.error = htonl(senddata.head.error); |
97 | 97 |
szdata += sizeof(mhead); |
98 | 98 |
|
... | ... |
@@ -1230,6 +1230,7 @@ void msend(mfile *m) |
1230 | 1230 |
} |
1231 | 1231 |
} |
1232 | 1232 |
} |
1233 |
+ |
|
1233 | 1234 |
void msend_clean() |
1234 | 1235 |
{ |
1235 | 1236 |
mfile *m = mftop[MFSEND]; |
... | ... |
@@ -56,10 +56,19 @@ install -Dp -m0755 support/makuosan.sysv %{buildroot}%{_initrddir}/makuosan |
56 | 56 |
# Default configs |
57 | 57 |
mkdir -p %{buildroot}/%{_sysconfdir}/sysconfig |
58 | 58 |
cat <<EOF >%{buildroot}/%{_sysconfdir}/sysconfig/%{name} |
59 |
+# Base Directory (Necessity) |
|
59 | 60 |
BASE_DIR="" |
61 |
+ |
|
62 |
+# Other |
|
60 | 63 |
PORT="5000" |
64 |
+MCAST_ADDRESS="224.0.0.108" |
|
61 | 65 |
IP_ADDRESS="127.0.0.1" |
62 | 66 |
SOCKET="" |
67 |
+LOGLEVEL="1" |
|
68 |
+MAKUOSAN_USER="" |
|
69 |
+MAKUOSAN_GROUP="" |
|
70 |
+MAKUOSAN_GROUPS="" |
|
71 |
+OPTIONS="" |
|
63 | 72 |
EOF |
64 | 73 |
|
65 | 74 |
%clean |
... | ... |
@@ -18,44 +18,62 @@ |
18 | 18 |
|
19 | 19 |
PATH=/sbin:/bin:/usr/bin:/usr/sbin |
20 | 20 |
|
21 |
-BASE_DIR="" |
|
22 |
-PORT="5000" |
|
23 |
-IP_ADDRESS="127.0.0.1" |
|
24 |
-SOCKET="" |
|
25 |
- |
|
26 | 21 |
# Source function library. |
27 | 22 |
. /etc/init.d/functions |
28 | 23 |
|
24 |
+export MAKUOSAN_USER |
|
25 |
+export MAKUOSAN_GROUP |
|
26 |
+export MAKUOSAN_GROUPS |
|
27 |
+export MAKUOSAN_BASE |
|
28 |
+export MAKUOSAN_PORT |
|
29 |
+export MAKUOSAN_SOCK |
|
30 |
+ |
|
29 | 31 |
# Get config. |
30 |
-test -f /etc/sysconfig/network && . /etc/sysconfig/network |
|
32 |
+test -f /etc/sysconfig/network && . /etc/sysconfig/network |
|
31 | 33 |
test -f /etc/sysconfig/makuosan && . /etc/sysconfig/makuosan |
32 |
- |
|
34 |
+[ -n "$BASE_DIR" ] && MAKUOSAN_BASE=$BASE_DIR; |
|
35 |
+[ -n "$PORT" ] && MAKUOSAN_PORT=$PORT |
|
36 |
+[ -n "$SOCKET" ] && MAKUOSAN_SOCK=$SOCKET |
|
33 | 37 |
|
34 | 38 |
# Check that networking is up. |
35 | 39 |
[ "${NETWORKING}" = "yes" ] || exit 0 |
36 |
-[ -n "${SOCKET}"] || SOCKET="-U ${SOCKET}" |
|
37 |
- |
|
38 |
-[ -f /usr/sbin/makuosan ] || exit 1 |
|
40 |
+[ -x /usr/sbin/makuosan ] || exit 1 |
|
39 | 41 |
|
40 | 42 |
RETVAL=0 |
41 |
- |
|
42 | 43 |
prog="makuosan" |
43 | 44 |
|
44 | 45 |
start(){ |
45 | 46 |
# Check config. |
46 |
- if [ -z "${BASE_DIR}" ]; then |
|
47 |
- echo "base directory setting (BASE_DIR) is empty." |
|
47 |
+ if [ -z "${MAKUOSAN_BASE}" ]; then |
|
48 |
+ echo "base directory setting (MAKUOSAN_BASE) is empty." |
|
48 | 49 |
exit 1 |
49 | 50 |
fi |
50 |
- if [ ! -d "${BASE_DIR}" ]; then |
|
51 |
- echo "${BASE_DIR} is not exists." |
|
51 |
+ if [ ! -d "${MAKUOSAN_BASE}" ]; then |
|
52 |
+ echo "${MAKUOSAN_BASE} is not exists." |
|
52 | 53 |
exit 1 |
53 | 54 |
fi |
54 |
- |
|
55 |
+ if [ -z "$LOGLEVEL" ]; then |
|
56 |
+ LOGLEVEL=1 |
|
57 |
+ fi |
|
58 |
+ if [ -n "$MCAST_ADDRESS" ]; then |
|
59 |
+ OPTIONS="-m $MCAST_ADDRESS $OPTIONS" |
|
60 |
+ fi |
|
61 |
+ if [ -n "$IP_ADDRESS" ]; then |
|
62 |
+ OPTIONS="-l $IP_ADDRESS $OPTIONS" |
|
63 |
+ fi |
|
64 |
+ OPTIONS="-d $LOGLEVEL $OPTIONS" |
|
55 | 65 |
echo -n $"Starting $prog: " |
56 |
- $prog -b "$BASE_DIR" -p "$PORT" -l "$IP_ADDRESS" "$SOCKET" |
|
66 |
+ $prog $OPTIONS 2>/tmp/makuosan.$$ |
|
57 | 67 |
RETVAL=$? |
58 |
- [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog |
|
68 |
+ if [ $RETVAL -eq 0 ]; then |
|
69 |
+ touch /var/lock/subsys/$prog |
|
70 |
+ p=`egrep '^pid ' /tmp/makuosan.$$ | cut -f 2 -d:` |
|
71 |
+ echo $p > /var/run/${prog}.pid |
|
72 |
+ echo_success |
|
73 |
+ else |
|
74 |
+ echo_failure |
|
75 |
+ fi |
|
76 |
+ rm -f /tmp/makuosan.$$ |
|
59 | 77 |
echo |
60 | 78 |
return $RETVAL |
61 | 79 |
} |
... | ... |
@@ -66,17 +84,18 @@ stop(){ |
66 | 66 |
RETVAL=$? |
67 | 67 |
if [ $RETVAL -eq 0 ] ; then |
68 | 68 |
rm -f /var/lock/subsys/$prog |
69 |
+ rm -f /var/run/${prog}.pid |
|
69 | 70 |
fi |
70 | 71 |
echo |
71 | 72 |
return $RETVAL |
72 | 73 |
} |
73 | 74 |
|
74 |
-reload(){ |
|
75 |
- echo -n $"Reloading configuration: " |
|
76 |
- killproc $prog -HUP |
|
77 |
- RETVAL=$? |
|
78 |
- echo |
|
79 |
- return $RETVAL |
|
75 |
+status(){ |
|
76 |
+ OPT="-c tcp:127.0.0.1:5000" |
|
77 |
+ [ -z "$PORT" ] && PORT=5000 |
|
78 |
+ [ -n "$IP_ADDRESS" ] && OPT="-c tcp:$IPADDRESS:$PORT" |
|
79 |
+ [ -n "$MAKUOSAN_SOCK" ] && OPT="-c $MAKUOSAN_SOCK" |
|
80 |
+ msync $OPT --status |
|
80 | 81 |
} |
81 | 82 |
|
82 | 83 |
restart(){ |
... | ... |
@@ -84,12 +103,6 @@ restart(){ |
84 | 84 |
start |
85 | 85 |
} |
86 | 86 |
|
87 |
-condrestart(){ |
|
88 |
- [ -e /var/lock/subsys/$prog ] && restart |
|
89 |
- return 0 |
|
90 |
-} |
|
91 |
- |
|
92 |
- |
|
93 | 87 |
# See how we were called. |
94 | 88 |
case "$1" in |
95 | 89 |
start) |
... | ... |
@@ -99,19 +112,13 @@ case "$1" in |
99 | 99 |
stop |
100 | 100 |
;; |
101 | 101 |
status) |
102 |
- status $prog |
|
102 |
+ status |
|
103 | 103 |
;; |
104 | 104 |
restart) |
105 | 105 |
restart |
106 | 106 |
;; |
107 |
- reload) |
|
108 |
- reload |
|
109 |
- ;; |
|
110 |
- condrestart) |
|
111 |
- condrestart |
|
112 |
- ;; |
|
113 | 107 |
*) |
114 |
- echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" |
|
108 |
+ echo $"Usage: $0 {start|stop|status|restart}" |
|
115 | 109 |
RETVAL=1 |
116 | 110 |
esac |
117 | 111 |
|