⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftencode.c

📁 netflow,抓包
💻 C
📖 第 1 页 / 共 4 页
字号:
  pdu_v8_4->records[i].dst_mask = rec_v8_4->dst_mask;  pdu_v8_4->records[i].dst_as = rec_v8_4->dst_as;  pdu_v8_4->records[i].output = rec_v8_4->output;  /* increment sequence # */  enc->seq_next[seq_index]++;  pdu_v8_4->count ++;  enc->buf_size += sizeof (struct ftrec_v8_4);  if (pdu_v8_4->count >= FT_PDU_V8_4_MAXFLOWS)    return 0;  else    return 1;} /* fts3rec_pdu_v8_4_encode *//* * function: fts3rec_pdu_v8_5_encode * * Encode a fts3rec into a version 8 Agg method 5 * * returns: -1 error encoding, PDU not encoded. *           0 PDU encoded.  Hint next call will fail. *           1 PDU encoded.  Room for more. * */int fts3rec_pdu_v8_5_encode(struct ftencode *enc,  struct fts3rec_v8_5 *rec_v8_5){  struct ftpdu_v8_5 *pdu_v8_5;  u_int seq_index;  int i;  pdu_v8_5 = (struct ftpdu_v8_5*) enc->buf_enc;  /* index to sequence # */  seq_index = rec_v8_5->engine_id<<8 | rec_v8_5->engine_type;  i = pdu_v8_5->count;  /* space to encode more ? */  if (i >= FT_PDU_V8_5_MAXFLOWS)    return -1;  /* if this is the first record, fill in the header */  if (!i) {    pdu_v8_5->version = 8;    pdu_v8_5->sysUpTime = rec_v8_5->sysUpTime;    pdu_v8_5->unix_secs = rec_v8_5->unix_secs;    pdu_v8_5->unix_nsecs = rec_v8_5->unix_nsecs;    pdu_v8_5->engine_type = rec_v8_5->engine_type;    pdu_v8_5->engine_id = rec_v8_5->engine_id;    pdu_v8_5->aggregation = 5;    pdu_v8_5->agg_version = 2;    pdu_v8_5->flow_sequence = enc->seq_next[seq_index];    enc->buf_size = 28; /* pdu header size */  } else {    /*  sysUpTime, unix_secs, unix_nsecs, and engine_* must match for     *  each pdu.  If a stream is being re-encoded this will normally     *  work out fine, if the stream was sorted or changed in some way     *  the PDU may only be able to hold one record.    */    if ((pdu_v8_5->sysUpTime != rec_v8_5->sysUpTime) ||        (pdu_v8_5->unix_secs != rec_v8_5->unix_secs) ||        (pdu_v8_5->unix_nsecs != rec_v8_5->unix_nsecs) ||        (pdu_v8_5->engine_id != rec_v8_5->engine_id) ||        (pdu_v8_5->engine_type != rec_v8_5->engine_type))        return -1;  }  pdu_v8_5->records[i].dFlows = rec_v8_5->dFlows;  pdu_v8_5->records[i].dPkts = rec_v8_5->dPkts;  pdu_v8_5->records[i].dOctets = rec_v8_5->dOctets;  pdu_v8_5->records[i].First = rec_v8_5->First;  pdu_v8_5->records[i].Last = rec_v8_5->Last;  pdu_v8_5->records[i].src_prefix = rec_v8_5->srcaddr;  pdu_v8_5->records[i].dst_prefix = rec_v8_5->dstaddr;  pdu_v8_5->records[i].dst_mask = rec_v8_5->dst_mask;  pdu_v8_5->records[i].src_mask = rec_v8_5->src_mask;  pdu_v8_5->records[i].src_as = rec_v8_5->src_as;  pdu_v8_5->records[i].dst_as = rec_v8_5->dst_as;  pdu_v8_5->records[i].input = rec_v8_5->input;  pdu_v8_5->records[i].output = rec_v8_5->output;  /* increment sequence # */  enc->seq_next[seq_index]++;  pdu_v8_5->count ++;  enc->buf_size += sizeof (struct ftrec_v8_5);  if (pdu_v8_5->count >= FT_PDU_V8_5_MAXFLOWS)    return 0;  else    return 1;} /* fts3rec_pdu_v8_5_encode *//* * function: fts3rec_pdu_v8_6_encode * * Encode a fts3rec into a version 8 Agg method 6 * * returns: -1 error encoding, PDU not encoded. *           0 PDU encoded.  Hint next call will fail. *           1 PDU encoded.  Room for more. * */int fts3rec_pdu_v8_6_encode(struct ftencode *enc,  struct fts3rec_v8_6 *rec_v8_6){  struct ftpdu_v8_6 *pdu_v8_6;  u_int seq_index;  int i;  pdu_v8_6 = (struct ftpdu_v8_6*) enc->buf_enc;  /* index to sequence # */  seq_index = rec_v8_6->engine_id<<8 | rec_v8_6->engine_type;  i = pdu_v8_6->count;  /* space to encode more ? */  if (i >= FT_PDU_V8_6_MAXFLOWS)    return -1;  /* if this is the first record, fill in the header */  if (!i) {    pdu_v8_6->version = 8;    pdu_v8_6->sysUpTime = rec_v8_6->sysUpTime;    pdu_v8_6->unix_secs = rec_v8_6->unix_secs;    pdu_v8_6->unix_nsecs = rec_v8_6->unix_nsecs;    pdu_v8_6->engine_type = rec_v8_6->engine_type;    pdu_v8_6->engine_id = rec_v8_6->engine_id;    pdu_v8_6->aggregation = 6;    pdu_v8_6->agg_version = 2;    pdu_v8_6->flow_sequence = enc->seq_next[seq_index];    enc->buf_size = 28; /* pdu header size */  } else {    /*  sysUpTime, unix_secs, unix_nsecs, and engine_* must match for     *  each pdu.  If a stream is being re-encoded this will normally     *  work out fine, if the stream was sorted or changed in some way     *  the PDU may only be able to hold one record.    */    if ((pdu_v8_6->sysUpTime != rec_v8_6->sysUpTime) ||        (pdu_v8_6->unix_secs != rec_v8_6->unix_secs) ||        (pdu_v8_6->unix_nsecs != rec_v8_6->unix_nsecs) ||        (pdu_v8_6->engine_id != rec_v8_6->engine_id) ||        (pdu_v8_6->engine_type != rec_v8_6->engine_type))        return -1;  }  pdu_v8_6->records[i].dstaddr = rec_v8_6->dstaddr;  pdu_v8_6->records[i].dPkts = rec_v8_6->dPkts;  pdu_v8_6->records[i].dOctets = rec_v8_6->dOctets;  pdu_v8_6->records[i].First = rec_v8_6->First;  pdu_v8_6->records[i].Last = rec_v8_6->Last;  pdu_v8_6->records[i].output = rec_v8_6->output;  pdu_v8_6->records[i].tos = rec_v8_6->tos;  pdu_v8_6->records[i].marked_tos = rec_v8_6->marked_tos;  pdu_v8_6->records[i].extra_pkts = rec_v8_6->extra_pkts;  pdu_v8_6->records[i].router_sc = rec_v8_6->router_sc;  /* increment sequence # */  enc->seq_next[seq_index]++;  pdu_v8_6->count ++;  enc->buf_size += sizeof (struct ftrec_v8_6);  if (pdu_v8_6->count >= FT_PDU_V8_6_MAXFLOWS)    return 0;  else    return 1;} /* fts3rec_pdu_v8_6_encode *//* * function: fts3rec_pdu_v8_7_encode * * Encode a fts3rec into a version 8 Agg method 7 * * returns: -1 error encoding, PDU not encoded. *           0 PDU encoded.  Hint next call will fail. *           1 PDU encoded.  Room for more. * */int fts3rec_pdu_v8_7_encode(struct ftencode *enc,  struct fts3rec_v8_7 *rec_v8_7){  struct ftpdu_v8_7 *pdu_v8_7;  u_int seq_index;  int i;  pdu_v8_7 = (struct ftpdu_v8_7*) enc->buf_enc;  /* index to sequence # */  seq_index = rec_v8_7->engine_id<<8 | rec_v8_7->engine_type;  i = pdu_v8_7->count;  /* space to encode more ? */  if (i >= FT_PDU_V8_7_MAXFLOWS)    return -1;  /* if this is the first record, fill in the header */  if (!i) {    pdu_v8_7->version = 8;    pdu_v8_7->sysUpTime = rec_v8_7->sysUpTime;    pdu_v8_7->unix_secs = rec_v8_7->unix_secs;    pdu_v8_7->unix_nsecs = rec_v8_7->unix_nsecs;    pdu_v8_7->engine_type = rec_v8_7->engine_type;    pdu_v8_7->engine_id = rec_v8_7->engine_id;    pdu_v8_7->aggregation = 7;    pdu_v8_7->agg_version = 2;    pdu_v8_7->flow_sequence = enc->seq_next[seq_index];    enc->buf_size = 28; /* pdu header size */  } else {    /*  sysUpTime, unix_secs, unix_nsecs, and engine_* must match for     *  each pdu.  If a stream is being re-encoded this will normally     *  work out fine, if the stream was sorted or changed in some way     *  the PDU may only be able to hold one record.    */    if ((pdu_v8_7->sysUpTime != rec_v8_7->sysUpTime) ||        (pdu_v8_7->unix_secs != rec_v8_7->unix_secs) ||        (pdu_v8_7->unix_nsecs != rec_v8_7->unix_nsecs) ||        (pdu_v8_7->engine_id != rec_v8_7->engine_id) ||        (pdu_v8_7->engine_type != rec_v8_7->engine_type))        return -1;  }  pdu_v8_7->records[i].dstaddr = rec_v8_7->dstaddr;  pdu_v8_7->records[i].srcaddr = rec_v8_7->srcaddr;  pdu_v8_7->records[i].dPkts = rec_v8_7->dPkts;  pdu_v8_7->records[i].dOctets = rec_v8_7->dOctets;  pdu_v8_7->records[i].First = rec_v8_7->First;  pdu_v8_7->records[i].Last = rec_v8_7->Last;  pdu_v8_7->records[i].output = rec_v8_7->output;  pdu_v8_7->records[i].input = rec_v8_7->input;  pdu_v8_7->records[i].tos = rec_v8_7->tos;  pdu_v8_7->records[i].marked_tos = rec_v8_7->marked_tos;  pdu_v8_7->records[i].extra_pkts = rec_v8_7->extra_pkts;  pdu_v8_7->records[i].router_sc = rec_v8_7->router_sc;  /* increment sequence # */  enc->seq_next[seq_index]++;  pdu_v8_7->count ++;  enc->buf_size += sizeof (struct ftrec_v8_7);  if (pdu_v8_7->count >= FT_PDU_V8_7_MAXFLOWS)    return 0;  else    return 1;} /* fts3rec_pdu_v8_7_encode *//* * function: fts3rec_pdu_v8_8_encode * * Encode a fts3rec into a version 8 Agg method 8 * * returns: -1 error encoding, PDU not encoded. *           0 PDU encoded.  Hint next call will fail. *           1 PDU encoded.  Room for more. * */int fts3rec_pdu_v8_8_encode(struct ftencode *enc,  struct fts3rec_v8_8 *rec_v8_8){  struct ftpdu_v8_8 *pdu_v8_8;  u_int seq_index;  int i;  pdu_v8_8 = (struct ftpdu_v8_8*) enc->buf_enc;  /* index to sequence # */  seq_index = rec_v8_8->engine_id<<8 | rec_v8_8->engine_type;  i = pdu_v8_8->count;  /* space to encode more ? */  if (i >= FT_PDU_V8_8_MAXFLOWS)    return -1;  /* if this is the first record, fill in the header */  if (!i) {    pdu_v8_8->version = 8;    pdu_v8_8->sysUpTime = rec_v8_8->sysUpTime;    pdu_v8_8->unix_secs = rec_v8_8->unix_secs;    pdu_v8_8->unix_nsecs = rec_v8_8->unix_nsecs;    pdu_v8_8->engine_type = rec_v8_8->engine_type;    pdu_v8_8->engine_id = rec_v8_8->engine_id;    pdu_v8_8->aggregation = 8;    pdu_v8_8->agg_version = 2;    pdu_v8_8->flow_sequence = enc->seq_next[seq_index];    enc->buf_size = 28; /* pdu header size */  } else {    /*  sysUpTime, unix_secs, unix_nsecs, and engine_* must match for     *  each pdu.  If a stream is being re-encoded this will normally     *  work out fine, if the stream was sorted or changed in some way     *  the PDU may only be able to hold one record.    */    if ((pdu_v8_8->sysUpTime != rec_v8_8->sysUpTime) ||        (pdu_v8_8->unix_secs != rec_v8_8->unix_secs) ||        (pdu_v8_8->unix_nsecs != rec_v8_8->unix_nsecs) ||        (pdu_v8_8->engine_id != rec_v8_8->engine_id) ||        (pdu_v8_8->engine_type != rec_v8_8->engine_type))        return -1;  }  pdu_v8_8->records[i].dstaddr = rec_v8_8->dstaddr;  pdu_v8_8->records[i].srcaddr = rec_v8_8->srcaddr;  pdu_v8_8->records[i].dstport = rec_v8_8->dstport;  pdu_v8_8->records[i].srcport = rec_v8_8->srcport;  pdu_v8_8->records[i].dPkts = rec_v8_8->dPkts;  pdu_v8_8->records[i].dOctets = rec_v8_8->dOctets;  pdu_v8_8->records[i].First = rec_v8_8->First;  pdu_v8_8->records[i].Last = rec_v8_8->Last;  pdu_v8_8->records[i].output = rec_v8_8->output;  pdu_v8_8->records[i].input = rec_v8_8->input;  pdu_v8_8->records[i].tos = rec_v8_8->tos;  pdu_v8_8->records[i].marked_tos = rec_v8_8->marked_tos;  pdu_v8_8->records[i].extra_pkts = rec_v8_8->extra_pkts;  pdu_v8_8->records[i].router_sc = rec_v8_8->router_sc;  /* increment sequence # */  enc->seq_next[seq_index]++;  pdu_v8_8->count ++;  enc->buf_size += sizeof (struct ftrec_v8_8);  if (pdu_v8_8->count >= FT_PDU_V8_8_MAXFLOWS)    return 0;  else    return 1;} /* fts3rec_pdu_v8_8_encode *//* * function: fts3rec_pdu_v8_9_encode * * Encode a fts3rec into a version 8 Agg method 9 * * returns: -1 error encoding, PDU not encoded. *           0 PDU encoded.  Hint next call will fail. *           1 PDU encoded.  Room for more. * */int fts3rec_pdu_v8_9_encode(struct ftencode *enc,  struct fts3rec_v8_9 *rec_v8_9){  struct ftpdu_v8_9 *pdu_v8_9;  u_int seq_index;  int i;  pdu_v8_9 = (struct ftpdu_v8_9*) enc->buf_enc;  /* index to sequence # */  seq_index = rec_v8_9->engine_id<<8 | rec_v8_9->engine_type;  i = pdu_v8_9->count;  /* space to encode more ? */  if (i >= FT_PDU_V8_9_MAXFLOWS)    return -1;  /* if this is the first record, fill in the header */  if (!i) {    pdu_v8_9->version = 8;    pdu_v8_9->sysUpTime = rec_v8_9->sysUpTime;    pdu_v8_9->unix_secs = rec_v8_9->unix_secs;    pdu_v8_9->unix_nsecs = rec_v8_9->unix_nsecs;    pdu_v8_9->engine_type = rec_v8_9->engine_type;    pdu_v8_9->engine_id = rec_v8_9->engine_id;    pdu_v8_9->aggregation = 9;    pdu_v8_9->agg_version = 2;    pdu_v8_9->flow_sequence = enc->seq_next[seq_index];    enc->buf_size = 28; /* pdu header size */  } else {    /*  sysUpTime, unix_secs, unix_nsecs, and engine_* must match for     *  each pdu.  If a stream is being re-encoded this will normally     *  work out fine, if the stream was sorted or changed in some way     *  the PDU may only be able to hold one record.    */    if ((pdu_v8_9->sysUpTime != rec_v8_9->sysUpTime) ||        (pdu_v8_9->unix_secs != rec_v8_9->unix_secs) ||        (pdu_v8_9->unix_nsecs != rec_v8_9->unix_nsecs) ||        (pdu_v8_9->engine_id != rec_v8_9->engine_id) ||        (pdu_v8_9->engine_type != rec_v8_9->engine_type))        return -1;  }  pdu_v8_9->records[i].dFlows = rec_v8_9->dFlows;  pdu_v8_9->records[i].dPkts = rec_v8_9->dPkts;  pdu_v8_9->records[i].dOctets = rec_v8_9->dOctets;  pdu_v8_9->records[i].First = rec_v8_9->First;  pdu_v8_9->records[i].Last = rec_v8_9->Last;  pdu_v8_9->records[i].src_as = rec_v8_9->src_as;  pdu_v8_9->records[i].dst_as = rec_v8_9->dst_as;  pdu_v8_9->records[i].input = rec_v8_9->input;  pdu_v8_9->records[i].output = rec_v8_9->output;  pdu_v8_9->records[i].tos = rec_v8_9->tos;  /* increment sequence # */  enc->seq_next[seq_index]++;  pdu_v8_9->count ++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -