int main() { struct wsqueue queue; pthread_t ths[2]; int rc, data; wsqueue_init(&queue); pthread_create(ths + 1, NULL, consumer, &queue); rc = pthread_create(ths, NULL, consumer, &queue); if (rc) { wsqueue_finit(&queue); perror("main"); exit(1); } while (!feof(stdin)) { rc = scanf("%d", &data); if (rc == 1) { struct payload *payload = create_payload(data); if (!payload) { perror("main"); break; } wsqueue_push(&queue, (struct list_node *)payload); } } cont = 0; wsqueue_notify_all(&queue); pthread_join(ths[0], NULL); pthread_join(ths[1], NULL); wsqueue_finit(&queue); return 0; }
int main( int argc, char **argval ) { JOB_DATA job_data; long long cnt = 0; signal( SIGINT, sig_int_handler ); #ifndef _HAVE_MSG_NOSIGNAL_ signal( SIGPIPE, SIG_IGN ); #endif parse_cmd_line( argc, argval, &job_data ); create_payload( &job_data ); if ( job_data.verbose ) { print_job_data( job_data ); } /* if */ cnt = flood_forked( job_data ); //printf( "%s[%d]: Sent %lld packets.\n\n", APPNAME, (int)getpid(), cnt ); free_job_data( &job_data ); drop_hash(); return cnt > 0; } /* main */
void test_validate_data_and_payload_creation(const axutil_env_t* env) { wsf_wsdl_data_t* data = NULL; wsf_wsdl_data_template_t* data_template = NULL; axis2_bool_t success; axis2_char_t* payload; AXIS2_LOG_DEBUG_MSG(env->log, "[wsf_wsdl_test] Starting test_wsdl_data..."); data = create_params(env); if (data) { AXIS2_LOG_DEBUG_MSG(env->log, "[wsf_wsdl_test]data is not NULL, again a good sign!"); } data_template = create_template(env); if (data_template) { AXIS2_LOG_DEBUG_MSG(env->log, "[wsf_wsdl_test]wow!, even template is not NULL!"); } success = validate_data(env, NULL, data_template, data, VALIDATION_CRITERIA_REQUEST_MODE_TYPE); if (success) { AXIS2_LOG_DEBUG_MSG(env->log, "[wsf_wsdl_test]validation result : SUCCESS!!!"); } payload = create_payload(env, data); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[wsf_wsdl_test]payload : %s", payload); AXIS2_LOG_DEBUG_MSG(env->log, "[wsf_wsdl_test] Ending test_wsdl_data..."); }
static void send_connect(uint64_t state_key, connection_status_t *c, void *pri_work, const ip_report_t *r) { union { void *ptr; send_pri_workunit_t *w; uint8_t *inc; } w_u; union { uint64_t state_key; struct { uint32_t dhost; uint16_t sport; uint16_t dport; } s; } k_u; uint32_t pay_size=0; uint8_t *pay_ptr=NULL; int (*create_payload)(uint8_t **, uint32_t *, void *)=NULL; int32_t na=0; int dyn=0; k_u.state_key=state_key; c->tseq++; if (get_payload(0, IPPROTO_TCP, k_u.s.sport, &pay_ptr, &pay_size, &na, &create_payload, s->payload_group) == 1) { int err=0; /* payload trigger */ DBG(M_CON, "pay size %u ptr %p conv %d create_payload %p", pay_size, pay_ptr, na, create_payload); if ((pay_size < 1 && pay_ptr == NULL) && create_payload == NULL) { ERR("pay size %u pay_ptr %p and create payload %p", pay_size, pay_ptr, create_payload); err++; } if (create_payload != NULL) { DBG(M_CON, "running create tcp payload at %p", create_payload); /* XXX */ if (create_payload(&pay_ptr, &pay_size, (void *)r) < 0) { ERR("create payload for port %u fails", k_u.s.sport); err++; } dyn++; } if (pay_size > 1460) { ERR("payload too big"); err++; } if (err == 0 && pay_size) { /* XXX if the payload is small use the 3-way handshake to send data */ w_u.ptr=xmalloc(sizeof(send_pri_workunit_t) + pay_size); w_u.w->magic=PRI_4SEND_MAGIC; w_u.w->dhost=k_u.s.dhost; w_u.w->dport=k_u.s.sport; w_u.w->sport=k_u.s.dport; w_u.w->shost=c->send_ip; w_u.w->tseq=c->tseq; w_u.w->mseq=c->mseq; w_u.w->window_size=c->window; w_u.w->flags=TH_ACK; w_u.w->doff=0; w_u.w->t_tstamp=c->t_tstamp; w_u.w->m_tstamp=c->m_tstamp; memcpy(w_u.inc + sizeof(send_pri_workunit_t), pay_ptr, pay_size); s->stats.stream_segments_sent++; fifo_push(pri_work, w_u.ptr); w_u.ptr=xmalloc(sizeof(send_pri_workunit_t) + pay_size); w_u.w->magic=PRI_4SEND_MAGIC; w_u.w->dhost=k_u.s.dhost; w_u.w->dport=k_u.s.sport; w_u.w->sport=k_u.s.dport; w_u.w->shost=c->send_ip; w_u.w->tseq=c->tseq; w_u.w->mseq=c->mseq; w_u.w->window_size=c->window; w_u.w->flags=TH_ACK|TH_PSH; w_u.w->doff=pay_size; w_u.w->t_tstamp=c->t_tstamp; w_u.w->m_tstamp=c->m_tstamp; memcpy(w_u.inc + sizeof(send_pri_workunit_t), pay_ptr, pay_size); /* PSH is set, lets increment our seq */ fifo_push(pri_work, w_u.ptr); c->ack_pending=0; s->stats.stream_segments_sent++; s->stats.stream_triggers_sent++; if (dyn) { s->stats.stream_dynamic_triggers_sent++; } c->mseq += pay_size; DBG(M_CON, "sending trigger to port %u", w_u.w->dport); w_u.ptr=NULL; } else { /* no payload so well just ack the connection */ w_u.ptr=xmalloc(sizeof(send_pri_workunit_t) + pay_size); w_u.w->magic=PRI_4SEND_MAGIC; w_u.w->dhost=k_u.s.dhost; w_u.w->dport=k_u.s.sport; w_u.w->sport=k_u.s.dport; w_u.w->shost=c->send_ip; w_u.w->tseq=c->tseq; w_u.w->mseq=c->mseq; w_u.w->window_size=c->window; w_u.w->flags=TH_ACK; w_u.w->doff=0; w_u.w->t_tstamp=c->t_tstamp; w_u.w->m_tstamp=c->m_tstamp; memcpy(w_u.inc + sizeof(send_pri_workunit_t), pay_ptr, pay_size); fifo_push(pri_work, w_u.ptr); s->stats.stream_segments_sent++; c->ack_pending=0; DBG(M_CON, "sending trigger to port %u", w_u.w->dport); w_u.ptr=NULL; } } /* get_payload */ else { w_u.ptr=xmalloc(sizeof(send_pri_workunit_t)); w_u.w->magic=PRI_4SEND_MAGIC; w_u.w->dhost=k_u.s.dhost; w_u.w->dport=k_u.s.sport; w_u.w->sport=k_u.s.dport; w_u.w->shost=c->send_ip; w_u.w->tseq=c->tseq + 1; /* SYN incs */ w_u.w->mseq=c->mseq; w_u.w->window_size=c->window; w_u.w->flags=TH_ACK; w_u.w->doff=0; w_u.w->t_tstamp=c->t_tstamp; w_u.w->m_tstamp=c->m_tstamp; c->m_tstamp++; fifo_push(pri_work, w_u.ptr); s->stats.stream_segments_sent++; c->ack_pending=0; w_u.ptr=NULL; } return; }