Page MenuHomeFreeBSD

D47106.id144877.diff
No OneTemporary

D47106.id144877.diff

diff --git a/sbin/ipf/common/ipf.h b/sbin/ipf/common/ipf.h
--- a/sbin/ipf/common/ipf.h
+++ b/sbin/ipf/common/ipf.h
@@ -178,7 +178,7 @@
extern char thishost[MAXHOSTNAMELEN];
extern char flagset[];
-extern u_char flags[];
+extern uint16_t flags[];
extern struct ipopt_names ionames[];
extern struct ipopt_names secclass[];
extern char *icmpcodes[MAX_ICMPCODE + 1];
@@ -330,7 +330,7 @@
extern int remove_hashnode(int, char *, struct iphtent_s *, ioctlfunc_t);
extern int remove_pool(ip_pool_t *, ioctlfunc_t);
extern int remove_poolnode(int, char *, ip_pool_node_t *, ioctlfunc_t);
-extern u_char tcpflags(char *);
+extern uint16_t tcpflags(char *);
extern void printc(struct frentry *);
extern void printC(int);
extern void emit(int, int, void *, struct frentry *);
diff --git a/sbin/ipf/ipmon/ipmon.c b/sbin/ipf/ipmon/ipmon.c
--- a/sbin/ipf/ipmon/ipmon.c
+++ b/sbin/ipf/ipmon/ipmon.c
@@ -78,6 +78,7 @@
{ TH_PUSH,'P' },
{ TH_ECN, 'E' },
{ TH_CWR, 'C' },
+ { TH_AE, 'e' },
{ 0, '\0' }
};
@@ -1196,7 +1197,7 @@
*t++ = ' ';
*t++ = '-';
for (i = 0; tcpfl[i].value; i++)
- if (tp->th_flags & tcpfl[i].value)
+ if (__tcp_get_flags(tp) & tcpfl[i].value)
*t++ = tcpfl[i].flag;
if (ipmonopts & IPMON_VERBOSE) {
sprintf(t, " %lu %lu %hu",
diff --git a/sbin/ipf/libipf/flags.c b/sbin/ipf/libipf/flags.c
--- a/sbin/ipf/libipf/flags.c
+++ b/sbin/ipf/libipf/flags.c
@@ -18,7 +18,10 @@
#ifndef TH_CWR
# define TH_CWR 0x80
#endif
+#ifndef TH_AE
+# define TH_AE 0x100
+#endif
-char flagset[] = "FSRPAUEC";
-u_char flags[] = { TH_FIN, TH_SYN, TH_RST, TH_PUSH, TH_ACK, TH_URG,
- TH_ECN, TH_CWR };
+char flagset[] = "FSRPAUECe";
+uint16_t flags[] = { TH_FIN, TH_SYN, TH_RST, TH_PUSH, TH_ACK, TH_URG,
+ TH_ECN, TH_CWR, TH_AE };
diff --git a/sbin/ipf/libipf/ipft_tx.c b/sbin/ipf/libipf/ipft_tx.c
--- a/sbin/ipf/libipf/ipft_tx.c
+++ b/sbin/ipf/libipf/ipft_tx.c
@@ -20,9 +20,9 @@
static int text_readip(mb_t *, char **, int *);
static int parseline(char *, ip_t *, char **, int *);
-static char myflagset[] = "FSRPAUEC";
-static u_char myflags[] = { TH_FIN, TH_SYN, TH_RST, TH_PUSH,
- TH_ACK, TH_URG, TH_ECN, TH_CWR };
+static char myflagset[] = "FSRPAUECe";
+static uint16_t myflags[] = { TH_FIN, TH_SYN, TH_RST, TH_PUSH,
+ TH_ACK, TH_URG, TH_ECN, TH_CWR ,TH_AE };
struct ipread iptext = { text_open, text_close, text_readip, R_DO_CKSUM };
static FILE *tfp = NULL;
@@ -265,15 +265,15 @@
if (*cpp != NULL) {
char *s, *t;
- tcp->th_flags = 0;
+ __tcp_set_flags(tcp, 0);
for (s = *cpp; *s; s++)
if ((t = strchr(myflagset, *s)))
- tcp->th_flags |= myflags[t-myflagset];
- if (tcp->th_flags)
+ __tcp_set_flags(tcp, __tcp_get_flags(tcp) | myflags[t-myflagset]);
+ if (__tcp_get_flags(tcp))
cpp++;
}
- if (tcp->th_flags & TH_URG)
+ if (__tcp_get_flags(tcp) & TH_URG)
tcp->th_urp = htons(1);
if (*cpp && !strncasecmp(*cpp, "seq=", 4)) {
@@ -436,15 +436,15 @@
if (*cpp != NULL) {
char *s, *t;
- tcp->th_flags = 0;
+ __tcp_set_flags(tcp, 0);
for (s = *cpp; *s; s++)
if ((t = strchr(myflagset, *s)))
- tcp->th_flags |= myflags[t-myflagset];
- if (tcp->th_flags)
+ __tcp_set_flags(tcp, __tcp_get_flags(tcp) | myflags[t-myflagset]);
+ if (__tcp_get_flags(tcp))
cpp++;
}
- if (tcp->th_flags & TH_URG)
+ if (__tcp_get_flags(tcp) & TH_URG)
tcp->th_urp = htons(1);
if (*cpp && !strncasecmp(*cpp, "seq=", 4)) {
diff --git a/sbin/ipf/libipf/printpacket.c b/sbin/ipf/libipf/printpacket.c
--- a/sbin/ipf/libipf/printpacket.c
+++ b/sbin/ipf/libipf/printpacket.c
@@ -19,6 +19,7 @@
{
u_short len, off;
tcphdr_t *tcp;
+ uint16_t tcpflags;
ip_t *ip;
ip = MTOD(m, ip_t *);
@@ -82,24 +83,26 @@
if (!(off & IP_OFFMASK)) {
if (ip->ip_p == IPPROTO_TCP || ip->ip_p == IPPROTO_UDP)
PRINTF(",%d", ntohs(tcp->th_dport));
- if ((ip->ip_p == IPPROTO_TCP) && (tcp->th_flags != 0)) {
+ if ((ip->ip_p == IPPROTO_TCP) && ((tcpflags = __tcp_get_flags(tcp)) != 0)) {
putchar(' ');
- if (tcp->th_flags & TH_FIN)
+ if (tcpflags & TH_FIN)
putchar('F');
- if (tcp->th_flags & TH_SYN)
+ if (tcpflags & TH_SYN)
putchar('S');
- if (tcp->th_flags & TH_RST)
+ if (tcpflags & TH_RST)
putchar('R');
- if (tcp->th_flags & TH_PUSH)
+ if (tcpflags & TH_PUSH)
putchar('P');
- if (tcp->th_flags & TH_ACK)
+ if (tcpflags & TH_ACK)
putchar('A');
- if (tcp->th_flags & TH_URG)
+ if (tcpflags & TH_URG)
putchar('U');
- if (tcp->th_flags & TH_ECN)
+ if (tcpflags & TH_ECN)
putchar('E');
- if (tcp->th_flags & TH_CWR)
+ if (tcpflags & TH_CWR)
putchar('C');
+ if (tcpflags & TH_AE)
+ putchar('e');
}
}
diff --git a/sbin/ipf/libipf/printtcpflags.c b/sbin/ipf/libipf/printtcpflags.c
--- a/sbin/ipf/libipf/printtcpflags.c
+++ b/sbin/ipf/libipf/printtcpflags.c
@@ -4,7 +4,7 @@
void
printtcpflags(u_32_t tcpf, u_32_t tcpfm)
{
- u_char *t;
+ uint16_t *t;
char *s;
if (tcpf & ~TCPF_ALL) {
diff --git a/sbin/ipf/libipf/tcp_flags.c b/sbin/ipf/libipf/tcp_flags.c
--- a/sbin/ipf/libipf/tcp_flags.c
+++ b/sbin/ipf/libipf/tcp_flags.c
@@ -9,13 +9,13 @@
#include "ipf.h"
-extern char flagset[];
-extern u_char flags[];
+extern char flagset[];
+extern uint16_t flags[];
-u_char tcp_flags(char *flgs, u_char *mask, int linenum)
+uint16_t tcp_flags(char *flgs, uint16_t *mask, int linenum)
{
- u_char tcpf = 0, tcpfm = 0;
+ uint16_t tcpf = 0, tcpfm = 0;
char *s;
s = strchr(flgs, '/');
@@ -37,9 +37,9 @@
if (!tcpfm) {
if (tcpf == TH_SYN)
- tcpfm = 0xff & ~(TH_ECN|TH_CWR);
+ tcpfm = TCPF_ALL & ~(TH_ECN|TH_CWR);
else
- tcpfm = 0xff & ~(TH_ECN);
+ tcpfm = TCPF_ALL & ~(TH_ECN);
}
*mask = tcpfm;
return (tcpf);
diff --git a/sbin/ipf/libipf/tcpflags.c b/sbin/ipf/libipf/tcpflags.c
--- a/sbin/ipf/libipf/tcpflags.c
+++ b/sbin/ipf/libipf/tcpflags.c
@@ -19,14 +19,17 @@
#ifndef TH_CWR
# define TH_CWR 0x80
#endif
+#ifndef TH_AE
+# define TH_AE 0x100
+#endif
-extern char flagset[];
-extern u_char flags[];
+extern char flagset[];
+extern uint16_t flags[];
-u_char tcpflags(char *flgs)
+uint16_t tcpflags(char *flgs)
{
- u_char tcpf = 0;
+ uint16_t tcpf = 0;
char *s, *t;
for (s = flgs; *s; s++) {
diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h
--- a/sys/net/pfvar.h
+++ b/sys/net/pfvar.h
@@ -2338,7 +2338,7 @@
extern void pf_unlink_src_node(struct pf_ksrc_node *);
extern u_int pf_free_src_nodes(struct pf_ksrc_node_list *);
extern void pf_print_state(struct pf_kstate *);
-extern void pf_print_flags(u_int8_t);
+extern void pf_print_flags(uint16_t);
extern int pf_addr_wrap_neq(struct pf_addr_wrap *,
struct pf_addr_wrap *);
extern u_int16_t pf_cksum_fixup(u_int16_t, u_int16_t, u_int16_t,
diff --git a/sys/netpfil/ipfilter/netinet/ip_compat.h b/sys/netpfil/ipfilter/netinet/ip_compat.h
--- a/sys/netpfil/ipfilter/netinet/ip_compat.h
+++ b/sys/netpfil/ipfilter/netinet/ip_compat.h
@@ -696,7 +696,7 @@
#define IPMINLEN(i, h) ((i)->ip_len >= (IP_HL(i) * 4 + sizeof(struct h)))
#define TCPF_ALL (TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG|\
- TH_ECN|TH_CWR)
+ TH_ECN|TH_CWR|TH_AE)
#if !SOLARIS && !defined(m_act)
# define m_act m_nextpkt
@@ -1128,7 +1128,10 @@
#ifndef TH_CWR
# define TH_CWR 0x80
#endif
-#define TH_ECNALL (TH_ECN|TH_CWR)
+#ifndef TH_AE
+# define TH_AE 0x100
+#endif
+#define TH_ECNALL (TH_ECN|TH_CWR|TH_AE)
/*
* TCP States
diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c
--- a/sys/netpfil/pf/pf.c
+++ b/sys/netpfil/pf/pf.c
@@ -2891,7 +2891,7 @@
}
void
-pf_print_flags(u_int8_t f)
+pf_print_flags(uint16_t f)
{
if (f)
printf(" ");
@@ -2911,6 +2911,8 @@
printf("E");
if (f & TH_CWR)
printf("W");
+ if (f & TH_AE)
+ printf("e");
}
#define PF_SET_SKIP_STEPS(i) \
diff --git a/usr.sbin/ppp/ip.c b/usr.sbin/ppp/ip.c
--- a/usr.sbin/ppp/ip.c
+++ b/usr.sbin/ppp/ip.c
@@ -561,7 +561,7 @@
{
char logbuf[200];
static const char *const TcpFlags[] = {
- "FIN", "SYN", "RST", "PSH", "ACK", "URG"
+ "FIN", "SYN", "RST", "PSH", "ACK", "URG", "ECE", "CWR", "AE"
};
const struct tcphdr *th;
const struct udphdr *uh;

File Metadata

Mime Type
text/plain
Expires
Fri, May 15, 11:26 AM (4 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33082005
Default Alt Text
D47106.id144877.diff (8 KB)

Event Timeline