TH_URG
static int flagv[] = { TH_ACK, TH_SYN, TH_URG, TH_RST, TH_PUSH,
{ TH_URG, 'U' },
__tcp_set_flags(tcp, __tcp_get_flags(tcp) | TH_URG);
__tcp_set_flags(t, TH_ACK|TH_URG);
__tcp_set_flags(t, __tcp_get_flags(t) & ~TH_URG);
uint16_t flags[] = { TH_FIN, TH_SYN, TH_RST, TH_PUSH, TH_ACK, TH_URG,
TH_ACK, TH_URG, TH_ECN, TH_CWR, TH_AE };
if (__tcp_get_flags(tcp) & TH_URG)
if (__tcp_get_flags(tcp) & TH_URG)
if (tcpflags & TH_URG)
{ "urg", TH_URG },
| (tcp_get_flags(th) & (TH_URG | TH_SYN | TH_RST | TH_FIN)));
KASSERT(!(tcp_get_flags(th) & (TH_URG | TH_SYN)),
tcp_get_flags(th) & (TH_URG | TH_SYN)));
KASSERT(!(tcp_get_flags(th) & (TH_URG | TH_SYN)),
tcp_get_flags(th) & (TH_URG | TH_SYN)));
if (tcp_get_flags(th) & TH_URG) {
tcp_set_flags(th, tcp_get_flags(th) | TH_URG);
tcp_set_flags(th, tcp_get_flags(th) & ~TH_URG);
#define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG|TH_ECE|TH_CWR|TH_AE)
(thflags & (TH_SYN|TH_FIN|TH_RST|TH_URG|TH_ACK)) == TH_ACK &&
thflags &= ~TH_URG;
thflags &= ~TH_URG;
if ((thflags & TH_URG) && th->th_urp &&
thflags &= ~TH_URG; /* XXX */
if (flags & TH_URG) {
if (flags & TH_URG) {
flags |= TH_URG;
__predict_true((thflags & (TH_SYN | TH_FIN | TH_RST | TH_URG | TH_ACK)) == TH_ACK) &&
thflags &= ~TH_URG;
thflags &= ~TH_URG;
if ((flags & TH_URG) != 0 && (tcp->th_urp == 0)) {
DT3(ipf_fi_bad_th_urg, fr_info_t*, fin, u_int, (flags & TH_URG), u_int, tcp->th_urp);
} else if ((flags & TH_URG) == 0 && (tcp->th_urp != 0)) {
DT3(ipf_fi_bad_th_urg0, fr_info_t *, fin, u_int, (flags & TH_URG), u_int, tcp->th_urp);
((flags & (TH_URG|TH_PUSH)) != 0)) {
} else if ((flags & (TH_URG|TH_PUSH|TH_FIN)) != 0) {
#ifndef TH_URG
if (f & TH_URG)
if ((flags & TH_FIN) || (flags & TH_PUSH) || (flags & TH_URG))
if (!(flags & TH_URG) && th->th_urp) {
if (__tcp_get_flags(th) & TH_URG) {
__tcp_set_flags(th, __tcp_get_flags(th) | TH_URG);
__tcp_set_flags(th, __tcp_get_flags(th) & ~TH_URG);