mirror of
https://github.com/srlabs/blue-merle.git
synced 2024-12-22 21:59:25 -05:00
bdc8837660
My hypothesis is that our script does not fully finish before the next daemon starts. I don't fully understand why our script does not seem to finish before the next script runs. But this appears to be working better.
31 lines
1.1 KiB
Bash
31 lines
1.1 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
# MAC addresses of connected clients are stored in a sqlite database.
|
|
# Having the database seems to be necessary for the device to be working properly.
|
|
# We intent to have the device store the database in RAM rather than on flash.
|
|
# We replace the directory with a memory-backed tmpfs which is as volatile as we can make it.
|
|
|
|
# We want to run ahead of "gl-tertf" which, currently, has a prioprity of 60.
|
|
# We also want to run ahead of "gl_clients" which has 99.
|
|
START=9
|
|
STOP=99
|
|
|
|
start() {
|
|
tmpdir="$(mktemp -d)"
|
|
# We mount a tmpfs so that the client database will be stored in memory only
|
|
mount -t tmpfs / "$tmpdir"
|
|
cp -a /etc/oui-tertf/client.db "$tmpdir"
|
|
shred --force --remove /etc/oui-tertf/client.db || rm -f /etc/oui-tertf/client.db
|
|
# If this script runs multiple times, we accumulate mounts; we try to avoid having mounts over mounts, so we unmount any existing tmpfs
|
|
umount -t tmpfs -l /etc/oui-tertf
|
|
|
|
mount -t tmpfs / /etc/oui-tertf
|
|
cp -a "$tmpdir/client.db" /etc/oui-tertf/client.db
|
|
umount -t tmpfs -l "$tmpdir"
|
|
}
|
|
|
|
stop() {
|
|
shred /etc/oui-tertf/client.db || rm -f /etc/oui-tertf/client.db
|
|
}
|
|
|