Lines 788-801
authpf_kill_states(void)
Link Here
|
788 |
{ |
788 |
{ |
789 |
struct pfioc_state_kill psk; |
789 |
struct pfioc_state_kill psk; |
790 |
struct pf_addr target; |
790 |
struct pf_addr target; |
|
|
791 |
sa_family_t saf; /* safe AF_INET family */ |
791 |
|
792 |
|
792 |
memset(&psk, 0, sizeof(psk)); |
793 |
memset(&psk, 0, sizeof(psk)); |
793 |
memset(&target, 0, sizeof(target)); |
794 |
memset(&target, 0, sizeof(target)); |
794 |
|
795 |
|
795 |
if (inet_pton(AF_INET, ipsrc, &target.v4) == 1) |
796 |
if (inet_pton(AF_INET, ipsrc, &target.v4) == 1) |
796 |
psk.psk_af = AF_INET; |
797 |
psk.psk_af = saf = AF_INET; |
797 |
else if (inet_pton(AF_INET6, ipsrc, &target.v6) == 1) |
798 |
else if (inet_pton(AF_INET6, ipsrc, &target.v6) == 1) |
798 |
psk.psk_af = AF_INET6; |
799 |
psk.psk_af = saf = AF_INET6; |
799 |
else { |
800 |
else { |
800 |
syslog(LOG_ERR, "inet_pton(%s) failed", ipsrc); |
801 |
syslog(LOG_ERR, "inet_pton(%s) failed", ipsrc); |
801 |
return; |
802 |
return; |
Lines 809-814
authpf_kill_states(void)
Link Here
|
809 |
if (ioctl(dev, DIOCKILLSTATES, &psk)) |
810 |
if (ioctl(dev, DIOCKILLSTATES, &psk)) |
810 |
syslog(LOG_ERR, "DIOCKILLSTATES failed (%m)"); |
811 |
syslog(LOG_ERR, "DIOCKILLSTATES failed (%m)"); |
811 |
|
812 |
|
|
|
813 |
/* restore AF_INET, since it contains now the Nr. of killed states */ |
814 |
psk.psk_af = saf; |
815 |
|
812 |
/* Kill all states to ipsrc */ |
816 |
/* Kill all states to ipsrc */ |
813 |
memset(&psk.psk_src, 0, sizeof(psk.psk_src)); |
817 |
memset(&psk.psk_src, 0, sizeof(psk.psk_src)); |
814 |
memcpy(&psk.psk_dst.addr.v.a.addr, &target, |
818 |
memcpy(&psk.psk_dst.addr.v.a.addr, &target, |