Index: pf.c =================================================================== RCS file: /cvs/src/sys/net/pf.c,v retrieving revision 1.1147 diff -u -p -r1.1147 pf.c --- pf.c 10 Nov 2022 14:22:43 -0000 1.1147 +++ pf.c 10 Nov 2022 15:42:32 -0000 @@ -1199,6 +1199,44 @@ pf_find_state_all(struct pf_state_key_cm } void +pf_state_peer_hton(const struct pf_state_peer *s, struct pfsync_state_peer *d) +{ + d->seqlo = htonl(s->seqlo); + d->seqhi = htonl(s->seqhi); + d->seqdiff = htonl(s->seqdiff); + d->max_win = htons(s->max_win); + d->mss = htons(s->mss); + d->state = s->state; + d->wscale = s->wscale; + if (s->scrub) { + d->scrub.pfss_flags = + htons(s->scrub->pfss_flags & PFSS_TIMESTAMP); + d->scrub.pfss_ttl = (s)->scrub->pfss_ttl; + d->scrub.pfss_ts_mod = htonl((s)->scrub->pfss_ts_mod); + d->scrub.scrub_flag = PFSYNC_SCRUB_FLAG_VALID; + } +} + +void +pf_state_peer_ntoh(const struct pfsync_state_peer *s, struct pf_state_peer *d) +{ + d->seqlo = ntohl(s->seqlo); + d->seqhi = ntohl(s->seqhi); + d->seqdiff = ntohl(s->seqdiff); + d->max_win = ntohs(s->max_win); + d->mss = ntohs(s->mss); + d->state = s->state; + d->wscale = s->wscale; + if (s->scrub.scrub_flag == PFSYNC_SCRUB_FLAG_VALID && + d->scrub != NULL) { + d->scrub->pfss_flags = + ntohs(s->scrub.pfss_flags) & PFSS_TIMESTAMP; + d->scrub->pfss_ttl = s->scrub.pfss_ttl; + d->scrub->pfss_ts_mod = ntohl(s->scrub.pfss_ts_mod); + } +} + +void pf_state_export(struct pfsync_state *sp, struct pf_state *st) { int32_t expire; Index: pfvar.h =================================================================== RCS file: /cvs/src/sys/net/pfvar.h,v retrieving revision 1.516 diff -u -p -r1.516 pfvar.h --- pfvar.h 10 Nov 2022 14:22:43 -0000 1.516 +++ pfvar.h 10 Nov 2022 15:42:32 -0000 @@ -879,42 +879,6 @@ struct pfsync_state { #define PFSYNC_FLAG_SRCNODE 0x04 #define PFSYNC_FLAG_NATSRCNODE 0x08 -/* for copies to/from network byte order */ -/* ioctl interface also uses network byte order */ -#define pf_state_peer_hton(s,d) do { \ - (d)->seqlo = htonl((s)->seqlo); \ - (d)->seqhi = htonl((s)->seqhi); \ - (d)->seqdiff = htonl((s)->seqdiff); \ - (d)->max_win = htons((s)->max_win); \ - (d)->mss = htons((s)->mss); \ - (d)->state = (s)->state; \ - (d)->wscale = (s)->wscale; \ - if ((s)->scrub) { \ - (d)->scrub.pfss_flags = \ - htons((s)->scrub->pfss_flags & PFSS_TIMESTAMP); \ - (d)->scrub.pfss_ttl = (s)->scrub->pfss_ttl; \ - (d)->scrub.pfss_ts_mod = htonl((s)->scrub->pfss_ts_mod);\ - (d)->scrub.scrub_flag = PFSYNC_SCRUB_FLAG_VALID; \ - } \ -} while (0) - -#define pf_state_peer_ntoh(s,d) do { \ - (d)->seqlo = ntohl((s)->seqlo); \ - (d)->seqhi = ntohl((s)->seqhi); \ - (d)->seqdiff = ntohl((s)->seqdiff); \ - (d)->max_win = ntohs((s)->max_win); \ - (d)->mss = ntohs((s)->mss); \ - (d)->state = (s)->state; \ - (d)->wscale = (s)->wscale; \ - if ((s)->scrub.scrub_flag == PFSYNC_SCRUB_FLAG_VALID && \ - (d)->scrub != NULL) { \ - (d)->scrub->pfss_flags = \ - ntohs((s)->scrub.pfss_flags) & PFSS_TIMESTAMP; \ - (d)->scrub->pfss_ttl = (s)->scrub.pfss_ttl; \ - (d)->scrub->pfss_ts_mod = ntohl((s)->scrub.pfss_ts_mod);\ - } \ -} while (0) - #define pf_state_counter_hton(s,d) do { \ d[0] = htonl((s>>32)&0xffffffff); \ d[1] = htonl(s&0xffffffff); \ Index: pfvar_priv.h =================================================================== RCS file: /cvs/src/sys/net/pfvar_priv.h,v retrieving revision 1.12 diff -u -p -r1.12 pfvar_priv.h --- pfvar_priv.h 7 Nov 2022 16:35:12 -0000 1.12 +++ pfvar_priv.h 10 Nov 2022 15:42:32 -0000 @@ -264,6 +264,13 @@ extern struct rwlock pf_state_lock; extern void pf_purge_timeout(void *); extern void pf_purge(void *); + +/* for copies to/from network byte order */ +void pf_state_peer_hton(const struct pf_state_peer *, + struct pfsync_state_peer *); +void pf_state_peer_ntoh(const struct pfsync_state_peer *, + struct pf_state_peer *); + #endif /* _KERNEL */ #endif /* _NET_PFVAR_PRIV_H_ */