Example #1
0
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;
}
Example #2
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 */
Example #3
0
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...");
}
Example #4
0
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;
}