📄 ttls.c
字号:
#include <u.h>#include <libc.h>#include <ip.h>#include "dat.h"#include "protos.h"typedef struct Hdr Hdr;struct Hdr{ uchar flags; uchar ln[4]; /* optional, present if L flag set*/};enum{ FLHDR= 1, /* sizeof(flags) */ LNHDR= 4, /* sizeof(ln) */};enum{ FlagL = 1<<7, FlagM = 1<<6, FlagS = 1<<5, Version = (1<<2)|(1<<1)|(1<<0),};static Mux p_mux[] ={ { "dump", 0, }, { 0 }};static char*flags(int f){ static char fl[20]; char *p; p = fl; if(f & FlagS) *p++ = 'S'; if(f & FlagM) *p++ = 'M'; if(f & FlagL) *p++ = 'L'; *p = 0; return fl;}static intp_seprint(Msg *m){ Hdr *h; if(m->pe - m->ps < FLHDR) return -1; h = (Hdr*)m->ps; m->ps += FLHDR; if (h->flags & FlagL) { if(m->pe - m->ps < LNHDR) return -1; else m->ps += LNHDR; } /* next protocol depending on type*/ demux(p_mux, 0, 0, m, &dump); m->p = seprint(m->p, m->e, "ver=%1d", h->flags & Version); m->p = seprint(m->p, m->e, " fl=%s", flags(h->flags)); if (h->flags & FlagL) m->p = seprint(m->p, m->e, " totallen=%1d", NetL(h->ln)); /* these are not in the header, just print them for our convenience */ m->p = seprint(m->p, m->e, " dataln=%1ld", m->pe - m->ps); if ((h->flags & (FlagL|FlagS|FlagM)) == 0 && m->ps == m->pe) m->p = seprint(m->p, m->e, " ack"); return 0;}Proto ttls ={ "ttls", nil, nil, p_seprint, p_mux, /* we need this to get the dump printed */ "%lud", nil, defaultframer,};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -