head 1.4; access; symbols; locks mouse:1.4; strict; comment @ * @; 1.4 date 2010.02.25.05.33.09; author mouse; state Exp; branches; next 1.3; 1.3 date 2010.02.18.03.03.19; author mouse; state Exp; branches; next 1.2; 1.2 date 2010.02.16.16.11.33; author mouse; state Exp; branches; next 1.1; 1.1 date 2010.02.16.06.29.38; author mouse; state Exp; branches; next ; desc @fmt-ext.c @ 1.4 log @Use get1u(f,0) instead of f->ibuf[0], and save the result in a variable rather than computing it multiple times. @ text @#include #include #include "structs.h" #include "fmt-util.h" #include "fmt-ext.h" void ctox_ext(FLOW *f, FILE *o) { unsigned char opc; unsigned char x; EXTINFO *ei; opc = get1u(f,0); if (opc < 128) abort(); x = f->conn->ext_opc_tbl[opc-128]; switch (x) { case TBL_UNK: case TBL_NONE: fprintf(o,"Unknown extension request\n"); print_raw_data(o,f); abort_packet_print(); break; } ei = f->conn->ext_opc_vec[x]; (*ei->def->request)(f,o); } void event_ext(FLOW *f, FILE *o) { int tx; unsigned char x; EXTINFO *ei; if ((f->ibuf[0]&0x7f) < 64) abort(); tx = (f->ibuf[0]&0x7f) - 64; while (1) { x = f->conn->ext_ev_tbl[tx]; if (x != TBL_NONE) break; tx --; if (tx < 0) { fprintf(o,"Unknown extension event\n"); print_raw_data(o,f); abort_packet_print(); } } switch (x) { case TBL_UNK: fprintf(o,"Unknown extension event\n"); print_raw_data(o,f); abort_packet_print(); break; } ei = f->conn->ext_ev_vec[x]; (*ei->def->event)(f,o); } void error_ext(FLOW *f, FILE *o) { int tx; unsigned char x; EXTINFO *ei; if (f->ibuf[1] < 128) abort(); tx = f->ibuf[1] - 128; while (1) { x = f->conn->ext_err_tbl[tx]; if (x != TBL_NONE) break; tx --; if (tx < 0) { fprintf(o,"Unknown extension error\n"); print_raw_data(o,f); abort_packet_print(); } } switch (x) { case TBL_UNK: fprintf(o,"Unknown extension error\n"); print_raw_data(o,f); abort_packet_print(); break; } ei = f->conn->ext_err_vec[x]; (*ei->def->error)(f,o); } @ 1.3 log @Add forgotten . @ text @d11 1 d15 3 a17 2 if (f->ibuf[0] < 128) abort(); x = f->conn->ext_opc_tbl[f->ibuf[0]-128]; @ 1.2 log @New extension framework. No extensions actually implemented yet. @ text @d2 1 @ 1.1 log @Initial revision @ text @d10 15 a24 3 fprintf(o,"extension request\n"); print_raw_data(o,f); abort_packet_print(); d27 1 a27 1 void error_ext(FLOW *f, FILE *o) d29 25 a53 3 fprintf(o,"extension error\n"); print_raw_data(o,f); abort_packet_print(); d56 1 a56 1 void event_ext(FLOW *f, FILE *o) d58 25 a82 3 fprintf(o,"extension event\n"); print_raw_data(o,f); abort_packet_print(); @