I don't see what's wrong in your config.
I cant just tell you what I do to to trigger the link at boot time :
Download your config.xml file, then add the following lines to the
<system> ... </system> section and finally upload the config.xml file
(m0n0 will restart right away).
<shellcmd>echo >/tmp/pinger.sh sleep 10</shellcmd>
<shellcmd>echo >>/tmp/pinger.sh ping -i 10 -c 6 -S '$1' '$2'</shellcmd>
<shellcmd>echo >>/tmp/pinger.sh exec ping -i 600 -S '$1' '$2'</shellcmd>
<shellcmd>sh /tmp/pinger.sh 10.0.0.1 192.168.1.0 >/dev/null
where 10.0.0.1 = "local" m0n0wall IP (LAN interface) and 192.168.1.0 =
remote *network* address (no need to actually reach something, we just
want to "stimulate" IPsec a bit)
Adapt it with your own IP adressing scheme and don't forget to invert
the IP settings for the other router!
PS: this pinger.sh idea is (c) Fred Wright ;-)