Example #1
0
static int
send_request(int sock, struct timeval *timeout, edg_wlpr_Request *request, edg_wlpr_Response *response)
{
   int ret;
   char *buf = NULL;
   size_t buf_len;

   /* timeouts ?? */

   ret = encode_request(request, &buf);
   if (ret)
      return ret;

   ret = edg_wlpr_Write(sock, timeout, buf, strlen(buf) + 1);
   free(buf);
   if (ret)
      return ret;

   ret = edg_wlpr_Read(sock, timeout, &buf, &buf_len);
   if (ret)
      return ret;

   ret = decode_response(buf, buf_len, response);
   free(buf);
   if (ret)
      return ret;

   return 0;
}
Example #2
0
int
main(void)
{
	isphdr_t *hdr;
	uint8_t buf[QENTRY_LEN];
	int i;

again:
	for (i = 0; i < QENTRY_LEN; i++) {
		int x;
		int r = scanf("%02x", &x);
		if (r == EOF) {
			break;
		}
		if (r != 1) {
			fprintf(stderr, "bad conversion at offset %d\n", i);
			break;
		}
		if (x > 0xff) {
			fprintf(stderr, "bogosity- x = 0x%x\n", x);
			break;
		}
		buf[i] = x;
	}
	if (i == 0) {
		return (0);
	} else if (i != QENTRY_LEN) {
		return (1);
	}
	hdr = (isphdr_t *) buf;
	switch (hdr->rqs_entry_type) {
	case RQSTYPE_RESPONSE:
		decode_response(buf);
		break;
	case RQSTYPE_T2RQS:
		decode_t2rqs(buf);
		break;
	case RQSTYPE_CTIO2:
	case RQSTYPE_CTIO3:
		decode_ctio2(buf);
		break;
	case RQSTYPE_CTIO7:
		decode_ctio7(buf);
		break;
	case RQSTYPE_T7RQS:
		decode_rqst7(buf);
		break;
	case RQSTYPE_A64_CONT:
		decode_a64_cont(buf);
		break;
	default:
		fprintf(stderr, "type 0x%x unknown\n", hdr->rqs_entry_type);
		break;
	}
	goto again;
}