/* * ptti.c -- BSD style print_tcptpi() function for lsof library */ /* * Copyright 1997 Purdue Research Foundation, West Lafayette, Indiana * 47907. All rights reserved. * * Written by Victor A. Abell * * This software is not subject to any license of the American Telephone * and Telegraph Company or the Regents of the University of California. * * Permission is granted to anyone to use this software for any purpose on * any computer system, and to alter it and redistribute it freely, subject * to the following restrictions: * * 1. Neither the authors nor Purdue University are responsible for any * consequences of the use of this software. * * 2. The origin of this software must not be misrepresented, either by * explicit claim or by omission. Credit to the authors and Purdue * University must appear in documentation and sources. * * 3. Altered versions must be plainly marked as such, and must not be * misrepresented as being the original software. * * 4. This notice may not be removed or altered. */ #include "../machine.h" #if defined(USE_LIB_PRINT_TCPTPI) # if !defined(lint) static char copyright[] = "@(#) Copyright 1997 Purdue Research Foundation.\nAll rights reserved.\n"; static char *rcsid = "$Id: ptti.c,v 1.6 2008/10/21 16:13:23 abe Exp $"; # endif /* !defined(lint) */ #define TCPSTATES /* activate tcpstates[] */ #include "../lsof.h" /* * build_IPstates() -- build the TCP and UDP state tables * * Note: this module does not support a UDP state table. */ void build_IPstates() { /* * Set the TcpNstates global variable. */ TcpNstates = TCP_NSTATES; TcpSt = (char **)&tcpstates; } /* * print_tcptpi() - print TCP/TPI info */ void print_tcptpi(nl) int nl; /* 1 == '\n' required */ { int ps = 0; int s; if ((Ftcptpi & TCPTPI_STATE) && Lf->lts.type == 0) { if (Ffield) (void) printf("%cST=", LSOF_FID_TCPTPI); else putchar('('); if (!TcpNstates) (void) build_IPstates(); if ((s = Lf->lts.state.i) < 0 || s >= TcpNstates) (void) printf("UNKNOWN_TCP_STATE_%d", s); else (void) fputs(TcpSt[s], stdout); ps++; if (Ffield) putchar(Terminator); } #if defined(HASTCPTPIQ) if (Ftcptpi & TCPTPI_QUEUES) { if (Lf->lts.rqs) { if (Ffield) putchar(LSOF_FID_TCPTPI); else { if (ps) putchar(' '); else putchar('('); } (void) printf("QR=%lu", Lf->lts.rq); if (Ffield) putchar(Terminator); ps++; } if (Lf->lts.sqs) { if (Ffield) putchar(LSOF_FID_TCPTPI); else { if (ps) putchar(' '); else putchar('('); } (void) printf("QS=%lu", Lf->lts.sq); if (Ffield) putchar(Terminator); ps++; } } #endif /* defined(HASTCPTPIQ) */ #if defined(HASSOOPT) if (Ftcptpi & TCPTPI_FLAGS) { int opt; if ((opt = Lf->lts.opt) || Lf->lts.pqlens || Lf->lts.qlens || Lf->lts.qlims || Lf->lts.rbszs || Lf->lts.sbsz ) { char sep = ' '; if (Ffield) sep = LSOF_FID_TCPTPI; else if (!ps) sep = '('; (void) printf("%cSO", sep); ps++; sep = '='; # if defined(SO_ACCEPTCONN) if (opt & SO_ACCEPTCONN) { (void) printf("%cACCEPTCONN", sep); opt &= ~SO_ACCEPTCONN; sep = ','; } # endif /* defined(SO_ACCEPTCONN) */ # if defined(SO_ACCEPTFILTER) if (opt & SO_ACCEPTFILTER) { (void) printf("%cACCEPTFILTER", sep); opt &= ~SO_ACCEPTFILTER; sep = ','; } # endif /* defined(SO_ACCEPTFILTER) */ # if defined(SO_AUDIT) if (opt & SO_AUDIT) { (void) printf("%cAUDIT", sep); opt &= ~SO_AUDIT; sep = ','; } # endif /* defined(SO_AUDIT) */ # if defined(SO_BINDANY) if (opt & SO_BINDANY) { (void) printf("%cBINDANY", sep); opt &= ~SO_BINDANY; sep = ','; } # endif /* defined(SO_BINDANY) */ # if defined(SO_BINTIME) if (opt & SO_BINTIME) { (void) printf("%cBINTIME", sep); opt &= ~SO_BINTIME; sep = ','; } # endif /* defined(SO_BINTIME) */ # if defined(SO_BROADCAST) if (opt & SO_BROADCAST) { (void) printf("%cBROADCAST", sep); opt &= ~SO_BROADCAST; sep = ','; } # endif /* defined(SO_BROADCAST) */ # if defined(SO_CKSUMRECV) if (opt & SO_CKSUMRECV) { (void) printf("%cCKSUMRECV", sep); opt &= ~SO_CKSUMRECV; sep = ','; } # endif /* defined(SO_CKSUMRECV) */ # if defined(SO_CLUA_IN_NOALIAS) if (opt & SO_CLUA_IN_NOALIAS) { (void) printf("%cCLUA_IN_NOALIAS", sep); opt &= ~SO_CLUA_IN_NOALIAS; sep = ','; } # endif /* defined(SO_CLUA_IN_NOALIAS) */ # if defined(SO_CLUA_IN_NOLOCAL) if (opt & SO_CLUA_IN_NOLOCAL) { (void) printf("%cCLUA_IN_NOLOCAL", sep); opt &= ~SO_CLUA_IN_NOLOCAL; sep = ','; } # endif /* defined(SO_CLUA_IN_NOLOCAL) */ # if defined(SO_DEBUG) if (opt & SO_DEBUG) { (void) printf("%cDEBUG", sep); opt &= ~ SO_DEBUG; sep = ','; } # endif /* defined(SO_DEBUG) */ # if defined(SO_DGRAM_ERRIND) if (opt & SO_DGRAM_ERRIND) { (void) printf("%cDGRAM_ERRIND", sep); opt &= ~SO_DGRAM_ERRIND; sep = ','; } # endif /* defined(SO_DGRAM_ERRIND) */ # if defined(SO_DONTROUTE) if (opt & SO_DONTROUTE) { (void) printf("%cDONTROUTE", sep); opt &= ~SO_DONTROUTE; sep = ','; } # endif /* defined(SO_DONTROUTE) */ # if defined(SO_DONTTRUNC) if (opt & SO_DONTTRUNC) { (void) printf("%cDONTTRUNC", sep); opt &= ~SO_DONTTRUNC; sep = ','; } # endif /* defined(SO_DONTTRUNC) */ # if defined(SO_EXPANDED_RIGHTS) if (opt & SO_EXPANDED_RIGHTS) { (void) printf("%cEXPANDED_RIGHTS", sep); opt &= ~SO_EXPANDED_RIGHTS; sep = ','; } # endif /* defined(SO_EXPANDED_RIGHTS) */ # if defined(SO_KEEPALIVE) if (opt & SO_KEEPALIVE) { (void) printf("%cKEEPALIVE", sep); if (Lf->lts.kai) (void) printf("=%d", Lf->lts.kai); opt &= ~SO_KEEPALIVE; sep = ','; } # endif /* defined(SO_KEEPALIVE) */ # if defined(SO_KERNACCEPT) if (opt & SO_KERNACCEPT) { (void) printf("%cKERNACCEPT", sep); opt &= ~SO_KERNACCEPT; sep = ','; } # endif /* defined(SO_KERNACCEPT) */ # if defined(SO_IMASOCKET) if (opt & SO_IMASOCKET) { (void) printf("%cIMASOCKET", sep); opt &= ~SO_IMASOCKET; sep = ','; } # endif /* defined(SO_IMASOCKET) */ # if defined(SO_LINGER) if (opt & SO_LINGER) { (void) printf("%cLINGER", sep); if (Lf->lts.ltm) (void) printf("=%d", Lf->lts.ltm); opt &= ~SO_LINGER; sep = ','; } # endif /* defined(SO_LINGER) */ # if defined(SO_LISTENING) if (opt & SO_LISTENING) { (void) printf("%cLISTENING", sep); opt &= ~SO_LISTENING; sep = ','; } # endif /* defined(SO_LISTENING) */ # if defined(SO_MGMT) if (opt & SO_MGMT) { (void) printf("%cMGMT", sep); opt &= ~SO_MGMT; sep = ','; } # endif /* defined(SO_MGMT) */ # if defined(SO_PAIRABLE) if (opt & SO_PAIRABLE) { (void) printf("%cPAIRABLE", sep); opt &= ~SO_PAIRABLE; sep = ','; } # endif /* defined(SO_PAIRABLE) */ # if defined(SO_RESVPORT) if (opt & SO_RESVPORT) { (void) printf("%cRESVPORT", sep); opt &= ~SO_RESVPORT; sep = ','; } # endif /* defined(SO_RESVPORT) */ # if defined(SO_NOREUSEADDR) if (opt & SO_NOREUSEADDR) { (void) printf("%cNOREUSEADDR", sep); opt &= ~SO_NOREUSEADDR; sep = ','; } # endif /* defined(SO_NOREUSEADDR) */ # if defined(SO_NOSIGPIPE) if (opt & SO_NOSIGPIPE) { (void) printf("%cNOSIGPIPE", sep); opt &= ~SO_NOSIGPIPE; sep = ','; } # endif /* defined(SO_NOSIGPIPE) */ # if defined(SO_OOBINLINE) if (opt & SO_OOBINLINE) { (void) printf("%cOOBINLINE", sep); opt &= ~SO_OOBINLINE; sep = ','; } # endif /* defined(SO_OOBINLINE) */ # if defined(SO_ORDREL) if (opt & SO_ORDREL) { (void) printf("%cORDREL", sep); opt &= ~SO_ORDREL; sep = ','; } # endif /* defined(SO_ORDREL) */ if (Lf->lts.pqlens) { (void) printf("%cPQLEN=%u", sep, Lf->lts.pqlen); sep = ','; } if (Lf->lts.qlens) { (void) printf("%cQLEN=%u", sep, Lf->lts.qlen); sep = ','; } if (Lf->lts.qlims) { (void) printf("%cQLIM=%u", sep, Lf->lts.qlim); sep = ','; } if (Lf->lts.rbszs) { (void) printf("%cRCVBUF=%lu", sep, Lf->lts.rbsz); sep = ','; } # if defined(SO_REUSEADDR) if (opt & SO_REUSEADDR) { (void) printf("%cREUSEADDR", sep); opt &= ~SO_REUSEADDR; sep = ','; } # endif /* defined(SO_REUSEADDR) */ # if defined(SO_REUSEALIASPORT) if (opt & SO_REUSEALIASPORT) { (void) printf("%cREUSEALIASPORT", sep); opt &= ~SO_REUSEALIASPORT; sep = ','; } # endif /* defined(SO_REUSEALIASPORT) */ # if defined(SO_REUSEPORT) if (opt & SO_REUSEPORT) { (void) printf("%cREUSEPORT", sep); opt &= ~SO_REUSEPORT; sep = ','; } # endif /* defined(SO_REUSEPORT) */ # if defined(SO_REUSERAD) if (opt & SO_REUSERAD) { (void) printf("%cREUSERAD", sep); opt &= ~SO_REUSERAD; sep = ','; } # endif /* defined(SO_REUSERAD) */ # if defined(SO_SECURITY_REQUEST) if (opt & SO_SECURITY_REQUEST) { (void) printf("%cSECURITY_REQUEST", sep); opt &= ~SO_SECURITY_REQUEST; sep = ','; } # endif /* defined(SO_SECURITY_REQUEST) */ if (Lf->lts.sbszs) { (void) printf("%cSNDBUF=%lu", sep, Lf->lts.sbsz); sep = ','; } # if defined(SO_TIMESTAMP) if (opt & SO_TIMESTAMP) { (void) printf("%cTIMESTAMP", sep); opt &= ~SO_TIMESTAMP; sep = ','; } # endif /* defined(SO_TIMESTAMP) */ # if defined(SO_UMC) if (opt & SO_UMC) { (void) printf("%cUMC", sep); opt &= ~SO_UMC; sep = ','; } # endif /* defined(SO_UMC) */ # if defined(SO_USE_IFBUFS) if (opt & SO_USE_IFBUFS) { (void) printf("%cUSE_IFBUFS", sep); opt &= ~SO_USE_IFBUFS; sep = ','; } # endif /* defined(SO_USE_IFBUFS) */ # if defined(SO_USELOOPBACK) if (opt & SO_USELOOPBACK) { (void) printf("%cUSELOOPBACK", sep); opt &= ~SO_USELOOPBACK; sep = ','; } # endif /* defined(SO_USELOOPBACK) */ # if defined(SO_WANTMORE) if (opt & SO_WANTMORE) { (void) printf("%cWANTMORE", sep); opt &= ~SO_WANTMORE; sep = ','; } # endif /* defined(SO_WANTMORE) */ # if defined(SO_WANTOOBFLAG) if (opt & SO_WANTOOBFLAG) { (void) printf("%cWANTOOBFLAG", sep); opt &= ~SO_WANTOOBFLAG; sep = ','; } # endif /* defined(SO_WANTOOBFLAG) */ if (opt) (void) printf("%cUNKNOWN=%#x", sep, opt); if (Ffield) putchar(Terminator); } } #endif /* defined(HASSOOPT) */ #if defined(HASSOSTATE) if (Ftcptpi & TCPTPI_FLAGS) { unsigned int ss; if ((ss = Lf->lts.ss)) { char sep = ' '; if (Ffield) sep = LSOF_FID_TCPTPI; else if (!ps) sep = '('; (void) printf("%cSS", sep); ps++; sep = '='; # if defined(SS_ASYNC) if (ss & SS_ASYNC) { (void) printf("%cASYNC", sep); ss &= ~SS_ASYNC; sep = ','; } # endif /* defined(SS_ASYNC) */ # if defined(SS_BOUND) if (ss & SS_BOUND) { (void) printf("%cBOUND", sep); ss &= ~SS_BOUND; sep = ','; } # endif /* defined(SS_BOUND) */ # if defined(HASSBSTATE) # if defined(SBS_CANTRCVMORE) if (Lf->lts.sbs_rcv & SBS_CANTRCVMORE) { (void) printf("%cCANTRCVMORE", sep); Lf->lts.sbs_rcv &= ~SBS_CANTRCVMORE; sep = ','; } # endif /* defined(SBS_CANTRCVMORE) */ # if defined(SBS_CANTSENDMORE) if (Lf->lts.sbs_snd & SBS_CANTSENDMORE) { (void) printf("%cCANTSENDMORE", sep); Lf->lts.sbs_snd &= ~SBS_CANTSENDMORE; sep = ','; } # endif /* defined(SS_CANTSENDMORE) */ # else /* !defined(HASSBSTATE) */ # if defined(SS_CANTRCVMORE) if (ss & SS_CANTRCVMORE) { (void) printf("%cCANTRCVMORE", sep); ss &= ~SS_CANTRCVMORE; sep = ','; } # endif /* defined(SS_CANTRCVMORE) */ # if defined(SS_CANTSENDMORE) if (ss & SS_CANTSENDMORE) { (void) printf("%cCANTSENDMORE", sep); ss &= ~SS_CANTSENDMORE; sep = ','; } # endif /* defined(SS_CANTSENDMORE) */ # endif /* defined(HASSBSTATE) */ # if defined(SS_COMP) if (ss & SS_COMP) { (void) printf("%cCOMP", sep); ss &= ~SS_COMP; sep = ','; } # endif /* defined(SS_COMP) */ # if defined(SS_CONNECTOUT) if (ss & SS_CONNECTOUT) { (void) printf("%cCONNECTOUT", sep); ss &= ~SS_CONNECTOUT; sep = ','; } # endif /* defined(SS_CONNECTOUT) */ # if defined(SS_HIPRI) if (ss & SS_HIPRI) { (void) printf("%cHIPRI", sep); ss &= ~SS_HIPRI; sep = ','; } # endif /* defined(SS_HIPRI) */ # if defined(SS_IGNERR) if (ss & SS_IGNERR) { (void) printf("%cIGNERR", sep); ss &= ~SS_IGNERR; sep = ','; } # endif /* defined(SS_IGNERR) */ # if defined(SS_INCOMP) if (ss & SS_INCOMP) { (void) printf("%cINCOMP", sep); ss &= ~SS_INCOMP; sep = ','; } # endif /* defined(SS_INCOMP) */ # if defined(SS_IOCWAIT) if (ss & SS_IOCWAIT) { (void) printf("%cIOCWAIT", sep); ss &= ~SS_IOCWAIT; sep = ','; } # endif /* defined(SS_IOCWAIT) */ # if defined(SS_ISCONFIRMING) if (ss & SS_ISCONFIRMING) { (void) printf("%cISCONFIRMING", sep); ss &= ~SS_ISCONFIRMING; sep = ','; } # endif /* defined(SS_ISCONFIRMING) */ # if defined(SS_ISCONNECTED) if (ss & SS_ISCONNECTED) { (void) printf("%cISCONNECTED", sep); ss &= ~SS_ISCONNECTED; sep = ','; } # endif /* defined(SS_ISCONNECTED) */ # if defined(SS_ISCONNECTING) if (ss & SS_ISCONNECTING) { (void) printf("%cISCONNECTING", sep); ss &= ~SS_ISCONNECTING; sep = ','; } # endif /* defined(SS_ISCONNECTING) */ # if defined(SS_ISDISCONNECTING) if (ss & SS_ISDISCONNECTING) { (void) printf("%cISDISCONNECTING", sep); ss &= ~SS_ISDISCONNECTING; sep = ','; } # endif /* defined(SS_ISDISCONNECTING) */ # if defined(SS_MORETOSEND) if (ss & SS_MORETOSEND) { (void) printf("%cMORETOSEND", sep); ss &= ~SS_MORETOSEND; sep = ','; } # endif /* defined(SS_MORETOSEND) */ # if defined(SS_NBIO) if (ss & SS_NBIO) { (void) printf("%cNBIO", sep); ss &= ~SS_NBIO; sep = ','; } # endif /* defined(SS_NBIO) */ # if defined(SS_NOCONN) if (ss & SS_NOCONN) { (void) printf("%cNOCONN", sep); ss &= ~SS_NOCONN; sep = ','; } # endif /* defined(SS_NOCONN) */ # if defined(SS_NODELETE) if (ss & SS_NODELETE) { (void) printf("%cNODELETE", sep); ss &= ~SS_NODELETE; sep = ','; } # endif /* defined(SS_NODELETE) */ # if defined(SS_NOFDREF) if (ss & SS_NOFDREF) { (void) printf("%cNOFDREF", sep); ss &= ~SS_NOFDREF; sep = ','; } # endif /* defined(SS_NOFDREF) */ # if defined(SS_NOGHOST) if (ss & SS_NOGHOST) { (void) printf("%cNOGHOST", sep); ss &= ~SS_NOGHOST; sep = ','; } # endif /* defined(SS_NOGHOST) */ # if defined(SS_NOINPUT) if (ss & SS_NOINPUT) { (void) printf("%cNOINPUT", sep); ss &= ~SS_NOINPUT; sep = ','; } # endif /* defined(SS_NOINPUT) */ # if defined(SS_PRIV) if (ss & SS_PRIV) { (void) printf("%cPRIV", sep); ss &= ~SS_PRIV; sep = ','; } # endif /* defined(SS_PRIV) */ # if defined(SS_QUEUE) if (ss & SS_QUEUE) { (void) printf("%cQUEUE", sep); ss &= ~SS_QUEUE; sep = ','; } # endif /* defined(SS_QUEUE) */ # if defined(HASSBSTATE) # if defined(SBS_RCVATMARK) if (Lf->lts.sbs_rcv & SBS_RCVATMARK) { (void) printf("%cRCVATMARK", sep); Lf->lts.sbs_rcv &= ~SBS_RCVATMARK; sep = ','; } # endif /* defined(SBS_RCVATMARK) */ # else /* !defined(HASSBSTATE) */ # if defined(SS_RCVATMARK) if (ss & SS_RCVATMARK) { (void) printf("%cRCVATMARK", sep); ss &= ~SS_RCVATMARK; sep = ','; } # endif /* defined(SS_RCVATMARK) */ # endif /* defined(HASSBSTATE) */ # if defined(SS_READWAIT) if (ss & SS_READWAIT) { (void) printf("%cREADWAIT", sep); ss &= ~SS_READWAIT; sep = ','; } # endif /* defined(SS_READWAIT) */ # if defined(SS_SETRCV) if (ss & SS_SETRCV) { (void) printf("%cSETRCV", sep); ss &= ~SS_SETRCV; sep = ','; } # endif /* defined(SS_SETRCV) */ # if defined(SS_SETSND) if (ss & SS_SETSND) { (void) printf("%cSETSND", sep); ss &= ~SS_SETSND; sep = ','; } # endif /* defined(SS_SETSND) */ # if defined(SS_SIGREAD) if (ss & SS_SIGREAD) { (void) printf("%cSIGREAD", sep); ss &= ~SS_SIGREAD; sep = ','; } # endif /* defined(SS_SIGREAD) */ # if defined(SS_SIGWRITE) if (ss & SS_SIGWRITE) { (void) printf("%cSIGWRITE", sep); ss &= ~SS_SIGWRITE; sep = ','; } # endif /* defined(SS_SIGWRITE) */ # if defined(SS_SPLICED) if (ss & SS_SPLICED) { (void) printf("%cSPLICED", sep); ss &= ~SS_SPLICED; sep = ','; } # endif /* defined(SS_SPLICED) */ # if defined(SS_WRITEWAIT) if (ss & SS_WRITEWAIT) { (void) printf("%cWRITEWAIT", sep); ss &= ~SS_WRITEWAIT; sep = ','; } # endif /* defined(SS_WRITEWAIT) */ # if defined(SS_ZOMBIE) if (ss & SS_ZOMBIE) { (void) printf("%cZOMBIE", sep); ss &= ~SS_ZOMBIE; sep = ','; } # endif /* defined(SS_ZOMBIE) */ if (ss) (void) printf("%cUNKNOWN=%#x", sep, ss); if (Ffield) putchar(Terminator); } } #endif /* defined(HASSOSTATE) */ #if defined(HASTCPOPT) if (Ftcptpi & TCPTPI_FLAGS) { int topt; if ((topt = Lf->lts.topt) || Lf->lts.msss) { char sep = ' '; if (Ffield) sep = LSOF_FID_TCPTPI; else if (!ps) sep = '('; (void) printf("%cTF", sep); ps++; sep = '='; # if defined(TF_ACKNOW) if (topt & TF_ACKNOW) { (void) printf("%cACKNOW", sep); topt &= ~TF_ACKNOW; sep = ','; } # endif /* defined(TF_ACKNOW) */ # if defined(TF_CANT_TXSACK) if (topt & TF_CANT_TXSACK) { (void) printf("%cCANT_TXSACK", sep); topt &= ~TF_CANT_TXSACK; sep = ','; } # endif /* defined(TF_CANT_TXSACK) */ # if defined(TF_DEAD) if (topt & TF_DEAD) { (void) printf("%cDEAD", sep); topt &= ~TF_DEAD; sep = ','; } # endif /* defined(TF_DEAD) */ # if defined(TF_DELACK) if (topt & TF_DELACK) { (void) printf("%cDELACK", sep); topt &= ~TF_DELACK; sep = ','; } # endif /* defined(TF_DELACK) */ # if defined(TF_DELAY_ACK) if (topt & TF_DELAY_ACK) { (void) printf("%cDELAY_ACK", sep); topt &= ~TF_DELAY_ACK; sep = ','; } # endif /* defined(TF_DELAY_ACK) */ # if defined(TF_DISABLE_ECN) if (topt & TF_DISABLE_ECN) { (void) printf("%cDISABLE_ECN", sep); topt &= ~TF_DISABLE_ECN; sep = ','; } # endif /* defined(TF_DISABLE_ECN) */ # if defined(TF_ECN) if (topt & TF_ECN) { (void) printf("%cECN", sep); topt &= ~TF_ECN; sep = ','; } # endif /* defined(TF_ECN) */ # if defined(TF_ECN_PERMIT) if (topt & TF_ECN_PERMIT) { (void) printf("%cECN_PERMIT", sep); topt &= ~TF_ECN_PERMIT; sep = ','; } # endif /* defined(TF_ECN_PERMIT) */ # if defined(TF_FASTRECOVERY) if (topt & TF_FASTRECOVERY) { (void) printf("%cFASTRECOVERY", sep); topt &= ~TF_FASTRECOVERY; sep = ','; } # endif /* defined(TF_FASTRECOVERY) */ # if defined(TF_FASTRXMT_PHASE) if (topt & TF_FASTRXMT_PHASE) { (void) printf("%cFASTRXMT_PHASE", sep); topt &= ~TF_FASTRXMT_PHASE; sep = ','; } # endif /* defined(TF_FASTRXMT_PHASE) */ # if defined(TF_HAVEACKED) if (topt & TF_HAVEACKED) { (void) printf("%cHAVEACKED", sep); topt &= ~TF_HAVEACKED; sep = ','; } # endif /* defined(TF_HAVEACKED) */ # if defined(TF_HAVECLOSED) if (topt & TF_HAVECLOSED) { (void) printf("%cHAVECLOSED", sep); topt &= ~TF_HAVECLOSED; sep = ','; } # endif /* defined(TF_HAVECLOSED) */ # if defined(TF_IGNR_RXSACK) if (topt & TF_IGNR_RXSACK) { (void) printf("%cIGNR_RXSACK", sep); topt &= ~TF_IGNR_RXSACK; sep = ','; } # endif /* defined(TF_IGNR_RXSACK) */ # if defined(TF_IOLOCK) if (topt & TF_IOLOCK) { (void) printf("%cIOLOCK", sep); topt &= ~TF_IOLOCK; sep = ','; } # endif /* defined(TF_IOLOCK) */ # if defined(TF_LARGESEND) if (topt & TF_LARGESEND) { (void) printf("%cLARGESEND", sep); topt &= ~TF_LARGESEND; sep = ','; } # endif /* defined(TF_LARGESEND) */ # if defined(TF_LASTIDLE) if (topt & TF_LASTIDLE) { (void) printf("%cLASTIDLE", sep); topt &= ~TF_LASTIDLE; sep = ','; } # endif /* defined(TF_LASTIDLE) */ # if defined(TF_LQ_OVERFLOW) if (topt & TF_LQ_OVERFLOW) { (void) printf("%cLQ_OVERFLOW", sep); topt &= ~TF_LQ_OVERFLOW; sep = ','; } # endif /* defined(TF_LQ_OVERFLOW) */ if (Lf->lts.msss) { (void) printf("%cMSS=%lu", sep, Lf->lts.mss); sep = ','; } # if defined(TF_MORETOCOME) if (topt & TF_MORETOCOME) { (void) printf("%cMORETOCOME", sep); topt &= ~TF_MORETOCOME; sep = ','; } # endif /* defined(TF_MORETOCOME) */ # if defined(TF_NEEDACK) if (topt & TF_NEEDACK) { (void) printf("%cNEEDACK", sep); topt &= ~TF_NEEDACK; sep = ','; } # endif /* defined(TF_NEEDACK) */ # if defined(TF_NEEDCLOSE) if (topt & TF_NEEDCLOSE) { (void) printf("%cNEEDCLOSE", sep); topt &= ~TF_NEEDCLOSE; sep = ','; } # endif /* defined(TF_NEEDCLOSE) */ # if defined(TF_NEEDFIN) if (topt & TF_NEEDFIN) { (void) printf("%cNEEDFIN", sep); topt &= ~TF_NEEDFIN; sep = ','; } # endif /* defined(TF_NEEDFIN) */ # if defined(TF_NEEDIN) if (topt & TF_NEEDIN) { (void) printf("%cNEEDIN", sep); topt &= ~TF_NEEDIN; sep = ','; } # endif /* defined(TF_NEEDIN) */ # if defined(TF_NEEDOUT) if (topt & TF_NEEDOUT) { (void) printf("%cNEEDOUT", sep); topt &= ~TF_NEEDOUT; sep = ','; } # endif /* defined(TF_NEEDOUT) */ # if defined(TF_NEEDSYN) if (topt & TF_NEEDSYN) { (void) printf("%cNEEDSYN", sep); topt &= ~TF_NEEDSYN; sep = ','; } # endif /* defined(TF_NEEDSYN) */ # if defined(TF_NEEDTIMER) if (topt & TF_NEEDTIMER) { (void) printf("%cNEEDTIMER", sep); topt &= ~TF_NEEDTIMER; sep = ','; } # endif /* defined(TF_NEEDTIMER) */ # if defined(TF_NEWRENO_RXMT) if (topt & TF_NEWRENO_RXMT) { (void) printf("%cNEWRENO_RXMT", sep); topt &= ~TF_NEWRENO_RXMT; sep = ','; } # endif /* defined(TF_NEWRENO_RXMT) */ # if defined(TF_NODELACK) if (topt & TF_NODELACK) { (void) printf("%cNODELACK", sep); topt &= ~TF_NODELACK; sep = ','; } # endif /* defined(TF_NODELACK) */ # if defined(TF_NODELAY) if (topt & TF_NODELAY) { (void) printf("%cNODELAY", sep); topt &= ~TF_NODELAY; sep = ','; } # endif /* defined(TF_NODELAY) */ # if defined(TF_NOOPT) if (topt & TF_NOOPT) { (void) printf("%cNOOPT", sep); topt &= ~TF_NOOPT; sep = ','; } # endif /* defined(TF_NOOPT) */ # if defined(TF_NOPUSH) if (topt & TF_NOPUSH) { (void) printf("%cNOPUSH", sep); topt &= ~TF_NOPUSH; sep = ','; } # endif /* defined(TF_NOPUSH) */ # if defined(TF_NO_PMTU) if (topt & TF_NO_PMTU) { (void) printf("%cNO_PMTU", sep); topt &= ~TF_NO_PMTU; sep = ','; } # endif /* defined(TF_NO_PMTU) */ # if defined(TF_RAW) if (topt & TF_RAW) { (void) printf("%cRAW", sep); topt &= ~TF_RAW; sep = ','; } # endif /* defined(TF_RAW) */ # if defined(TF_RCVD_CC) if (topt & TF_RCVD_CC) { (void) printf("%cRCVD_CC", sep); topt &= ~TF_RCVD_CC; sep = ','; } # endif /* defined(TF_RCVD_CC) */ # if defined(TF_RCVD_SCALE) if (topt & TF_RCVD_SCALE) { (void) printf("%cRCVD_SCALE", sep); topt &= ~TF_RCVD_SCALE; sep = ','; } # endif /* defined(TF_RCVD_SCALE) */ # if defined(TF_RCVD_CE) if (topt & TF_RCVD_CE) { (void) printf("%cRCVD_CE", sep); topt &= ~TF_RCVD_CE; sep = ','; } # endif /* defined(TF_RCVD_CE) */ # if defined(TF_RCVD_TS) if (topt & TF_RCVD_TS) { (void) printf("%cRCVD_TS", sep); topt &= ~TF_RCVD_TS; sep = ','; } # endif /* defined(TF_RCVD_TS) */ # if defined(TF_RCVD_TSTMP) if (topt & TF_RCVD_TSTMP) { (void) printf("%cRCVD_TSTMP", sep); topt &= ~TF_RCVD_TSTMP; sep = ','; } # endif /* defined(TF_RCVD_TSTMP) */ # if defined(TF_RCVD_WS) if (topt & TF_RCVD_WS) { (void) printf("%cRCVD_WS", sep); topt &= ~TF_RCVD_WS; sep = ','; } # endif /* defined(TF_RCVD_WS) */ # if defined(TF_REASSEMBLING) if (topt & TF_REASSEMBLING) { (void) printf("%cREASSEMBLING", sep); topt &= ~TF_REASSEMBLING; sep = ','; } # endif /* defined(TF_REASSEMBLING) */ # if defined(TF_REQ_CC) if (topt & TF_REQ_CC) { (void) printf("%cREQ_CC", sep); topt &= ~TF_REQ_CC; sep = ','; } # endif /* defined(TF_REQ_CC) */ # if defined(TF_REQ_SCALE) if (topt & TF_REQ_SCALE) { (void) printf("%cREQ_SCALE", sep); topt &= ~TF_REQ_SCALE; sep = ','; } # endif /* defined(TF_REQ_SCALE) */ # if defined(TF_REQ_TSTMP) if (topt & TF_REQ_TSTMP) { (void) printf("%cREQ_TSTMP", sep); topt &= ~TF_REQ_TSTMP; sep = ','; } # endif /* defined(TF_REQ_TSTMP) */ # if defined(TF_RFC1323) if (topt & TF_RFC1323) { (void) printf("%cRFC1323", sep); topt &= ~TF_RFC1323; sep = ','; } # endif /* defined(TF_RFC1323) */ # if defined(TF_RXWIN0SENT) if (topt & TF_RXWIN0SENT) { (void) printf("%cRXWIN0SENT", sep); topt &= ~TF_RXWIN0SENT; sep = ','; } # endif /* defined(TF_RXWIN0SENT) */ # if defined(TF_SACK_GENERATE) if (topt & TF_SACK_GENERATE) { (void) printf("%cSACK_GENERATE", sep); topt &= ~TF_SACK_GENERATE; sep = ','; } # endif /* defined(TF_SACK_GENERATE) */ # if defined(TF_SACK_PERMIT) if (topt & TF_SACK_PERMIT) { (void) printf("%cSACK_PERMIT", sep); topt &= ~TF_SACK_PERMIT; sep = ','; } # endif /* defined(TF_SACK_PERMIT) */ # if defined(TF_SACK_PROCESS) if (topt & TF_SACK_PROCESS) { (void) printf("%cSACK_PROCESS", sep); topt &= ~TF_SACK_PROCESS; sep = ','; } # endif /* defined(TF_SACK_PROCESS) */ # if defined(TF_SEND) if (topt & TF_SEND) { (void) printf("%cSEND", sep); topt &= ~TF_SEND; sep = ','; } # endif /* defined(TF_SEND) */ # if defined(TF_SEND_AND_DISCONNECT) if (topt & TF_SEND_AND_DISCONNECT) { (void) printf("%cSEND_AND_DISCONNECT", sep); topt &= ~TF_SEND_AND_DISCONNECT; sep = ','; } # endif /* defined(TF_SEND_AND_DISCONNECT) */ # if defined(TF_SENDCCNEW) if (topt & TF_SENDCCNEW) { (void) printf("%cSENDCCNEW", sep); topt &= ~TF_SENDCCNEW; sep = ','; } # endif /* defined(TF_SENDCCNEW) */ # if defined(TF_SEND_CWR) if (topt & TF_SEND_CWR) { (void) printf("%cSEND_CWR", sep); topt &= ~TF_SEND_CWR; sep = ','; } # endif /* defined(TF_SEND_CWR) */ # if defined(TF_SEND_ECHO) if (topt & TF_SEND_ECHO) { (void) printf("%cSEND_ECHO", sep); topt &= ~TF_SEND_ECHO; sep = ','; } # endif /* defined(TF_SEND_ECHO) */ # if defined(TF_SEND_TSTMP) if (topt & TF_SEND_TSTMP) { (void) printf("%cSEND_TSTMP", sep); topt &= ~TF_SEND_TSTMP; sep = ','; } # endif /* defined(TF_SEND_TSTMP) */ # if defined(TF_SENTFIN) if (topt & TF_SENTFIN) { (void) printf("%cSENTFIN", sep); topt &= ~TF_SENTFIN; sep = ','; } # endif /* defined(TF_SENTFIN) */ # if defined(TF_SENT_TS) if (topt & TF_SENT_TS) { (void) printf("%cSENT_TS", sep); topt &= ~TF_SENT_TS; sep = ','; } # endif /* defined(TF_SENT_TS) */ # if defined(TF_SENT_WS) if (topt & TF_SENT_WS) { (void) printf("%cSENT_WS", sep); topt &= ~TF_SENT_WS; sep = ','; } # endif /* defined(TF_SENT_WS) */ # if defined(TF_SIGNATURE) if (topt & TF_SIGNATURE) { (void) printf("%cSIGNATURE", sep); topt &= ~TF_SIGNATURE; sep = ','; } # endif /* defined(TF_SIGNATURE) */ # if defined(TF_SLOWLINK) if (topt & TF_SLOWLINK) { (void) printf("%cSLOWLINK", sep); topt &= ~TF_SLOWLINK; sep = ','; } # endif /* defined(TF_SLOWLINK) */ # if defined(TF_STDURG) if (topt & TF_STDURG) { (void) printf("%cSTDURG", sep); topt &= ~TF_STDURG; sep = ','; } # endif /* defined(TF_STDURG) */ # if defined(TF_SYN_REXMT) if (topt & TF_SYN_REXMT) { (void) printf("%cSYN_REXMT", sep); topt &= ~TF_SYN_REXMT; sep = ','; } # endif /* defined(TF_SYN_REXMT) */ # if defined(TF_UIOMOVED) if (topt & TF_UIOMOVED) { (void) printf("%cUIOMOVED", sep); topt &= ~TF_UIOMOVED; sep = ','; } # endif /* defined(TF_UIOMOVED) */ # if defined(TF_USE_SCALE) if (topt & TF_USE_SCALE) { (void) printf("%cUSE_SCALE", sep); topt &= ~TF_USE_SCALE; sep = ','; } # endif /* defined(TF_USE_SCALE) */ # if defined(TF_WASIDLE) if (topt & TF_WASIDLE) { (void) printf("%cWASIDLE", sep); topt &= ~TF_WASIDLE; sep = ','; } # endif /* defined(TF_WASIDLE) */ # if defined(TF_WASFRECOVERY) if (topt & TF_WASFRECOVERY) { (void) printf("%cWASFRECOVERY", sep); topt &= ~TF_WASFRECOVERY; sep = ','; } # endif /* defined(TF_WASFRECOVERY) */ # if defined(TF_WILL_SACK) if (topt & TF_WILL_SACK) { (void) printf("%cWILL_SACK", sep); topt &= ~TF_WILL_SACK; sep = ','; } # endif /* defined(TF_WILL_SACK) */ if (topt) (void) printf("%cUNKNOWN=%#x", sep, topt); if (Ffield) putchar(Terminator); } } #endif /* defined(HASTCPOPT) */ #if defined(HASTCPTPIW) if (Ftcptpi & TCPTPI_WINDOWS) { if (Lf->lts.rws) { if (Ffield) putchar(LSOF_FID_TCPTPI); else { if (ps) putchar(' '); else putchar('('); } (void) printf("WR=%lu", Lf->lts.rw); if (Ffield) putchar(Terminator); ps++; } if (Lf->lts.wws) { if (Ffield) putchar(LSOF_FID_TCPTPI); else { if (ps) putchar(' '); else putchar('('); } (void) printf("WW=%lu", Lf->lts.ww); if (Ffield) putchar(Terminator); ps++; } } #endif /* defined(HASTCPTPIW) */ if (ps && !Ffield) putchar(')'); if (nl) putchar('\n'); } #else /* !defined(USE_LIB_PRINT_TCPTPI) */ char ptti_d1[] = "d"; char *ptti_d2 = ptti_d1; #endif /* defined(USE_LIB_PRINT_TCPTPI) */