> On 10/6/20 8:50 AM, Matt Darfeuille wrote:
>> On 10/6/2020 5:11 PM, Tom Eastep wrote:
>>> On 10/6/20 7:33 AM, Simon Matter wrote:
>>>>> On Tue, Oct 06, 2020 at 03:59:06PM +0200, Simon Matter wrote:
>>>>>>>> Compilation will only happen when '/etc/shorewall' is modified.
>>>>>>>> So if I'm not mistaking, updating the firewall will not trigger a
>>>>>>>> recompilation.
>>>>>>>>
>>>>>>>
>>>>>>> Recompilation should occur if ANY file in ANY directory in
>>>>>> $CONFIG_PATH
>>>>>>> changes. Given that installing a new version updates
>>>>>>> /usr/share/shorewall/, 'reload' after an update should force
>>>>>>> re-compilation.
>>>>>>>
>>>>>>> I reproduced this problem using the tarball installers.
>>>>>>>
>>>>>>> Simon -- How did you upgrade?
>>>>>>
>>>>>> Dear Tom and all,
>>>>>>
>>>>>> For a test I've downgraded to shorewall-5.2.6.1 and saw the same
>>>>>> behavior.
>>>>>
>>>>> Tom is asking *how* you upgraded/downgraded.
>>>>
>>>> As I said with my own RPMs, they are mentioned on
>>>> https://shorewall.org/download.htm
>>>>
>>>
>>> After 'reload' didn't recompile, I found that the mtime of
>>> /var/lib/shorewall/firewall had been mysteriously updated to a time
>>> after the upgrade. Have others noticed the same behavior?
>>>
>>
>> I just installed SW 5.2.8 (core, shorewall, init) followed by 'shorewall
>> update' and 'shorewall reload'.
>> The below is after multiple 'shorewall update followed by reload'.
>>
>> /var/lib/shorewall# ls -l firewall && shorewall reload && ls -l firewall
>> -rwx------ 1 root root 76618 Oct  6 17:33 firewall
>> Reloading Shorewall....
>> Initializing...
>> Processing /etc/shorewall/init ...
>> [snip]
>> Setting up Route Filtering...
>> Setting up Martian Logging...
>> Preparing iptables-restore input...
>> Running /sbin/iptables-restore --wait 60...
>> IPv4 Forwarding Enabled
>> done.
>> -rwx------ 1 root root 76618 Oct  6 17:33 firewall
>>
>>
>> Do you want other test?
>>
>
> What was the current time? Or, what was the output of 'ls -l
> /usr/share/shorewall/?

OK, found it in my case, it's coming from here:

elif [ -z "$AUTOMAKE" ]; then
    if [ -n "$(${find} ${dir} -maxdepth 1 -type f -newer $1 -print -quit)"
]; then
        return 1;
    fi

I had 5.2.7 installed and made some configuration changes, say in October.
Then I upgraded to 5.2.8 with the RPM, which was built in September.

So, the content in /usr/share/shorewall/ has mtimes in September, but my
/var/lib/shorewall/firewall was created in October.

Result: the 'find' above doesn't show anything newer than my
/var/lib/shorewall/firewall and nothing is recompiled on reload.

This affects my own RPMs but I guess the same is true for others too.

I'm thinking about what the best fix is here. Maybe simply add a %post
install script which does:

mv -f /var/lib/shorewall[6]/firewall /var/lib/shorewall[6]/firewall.old

Maybe we can discuss this here so all packages can use the same approach.

Regards,
Simon



_______________________________________________
Shorewall-users mailing list
Shorewall-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to