summaryrefslogtreecommitdiffstats
path: root/vlib-api/vlibsocket/sock_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'vlib-api/vlibsocket/sock_test.c')
-rw-r--r--vlib-api/vlibsocket/sock_test.c215
1 files changed, 113 insertions, 102 deletions
diff --git a/vlib-api/vlibsocket/sock_test.c b/vlib-api/vlibsocket/sock_test.c
index cfae32f68fa..3bded08fd99 100644
--- a/vlib-api/vlibsocket/sock_test.c
+++ b/vlib-api/vlibsocket/sock_test.c
@@ -20,9 +20,9 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
-#include <netdb.h>
+#include <netdb.h>
-#define SOCKCLNT_SERVER_PORT 32741 /* whatever */
+#define SOCKCLNT_SERVER_PORT 32741 /* whatever */
typedef signed char i8;
typedef signed short i16;
@@ -36,109 +36,120 @@ typedef unsigned long uword;
#define VL_API_PACKED(x) x __attribute__ ((packed))
-typedef VL_API_PACKED(struct _vl_api_sockclnt_create {
- u16 _vl_msg_id;
- u8 name[64];
- u32 context;
-}) vl_api_sockclnt_create_t;
-
-typedef VL_API_PACKED(struct _vl_api_sockclnt_create_reply {
- u16 _vl_msg_id;
- i32 response;
- u64 handle;
- u32 index;
- u32 context;
-}) vl_api_sockclnt_create_reply_t;
-
-typedef VL_API_PACKED(struct _vl_api_sockclnt_delete {
- u16 _vl_msg_id;
- u32 index;
- u64 handle;
-}) vl_api_sockclnt_delete_t;
-
-typedef VL_API_PACKED(struct _vl_api_sockclnt_delete_reply {
- u16 _vl_msg_id;
- i32 response;
- u64 handle;
-}) vl_api_sockclnt_delete_reply_t;
-
-void error(char *msg)
+typedef VL_API_PACKED (struct _vl_api_sockclnt_create
+ {
+ u16 _vl_msg_id; u8 name[64];
+ u32 context;
+ }) vl_api_sockclnt_create_t;
+
+typedef VL_API_PACKED (struct _vl_api_sockclnt_create_reply
+ {
+ u16 _vl_msg_id;
+ i32 response; u64 handle; u32 index; u32 context;
+ }) vl_api_sockclnt_create_reply_t;
+
+typedef VL_API_PACKED (struct _vl_api_sockclnt_delete
+ {
+ u16 _vl_msg_id; u32 index;
+ u64 handle;
+ }) vl_api_sockclnt_delete_t;
+
+typedef VL_API_PACKED (struct _vl_api_sockclnt_delete_reply
+ {
+ u16 _vl_msg_id; i32 response; u64 handle;
+ }) vl_api_sockclnt_delete_reply_t;
+
+void
+error (char *msg)
{
- perror(msg);
- exit(0);
+ perror (msg);
+ exit (0);
}
-int main(int argc, char *argv[])
+int
+main (int argc, char *argv[])
{
- int sockfd, portno, n;
- struct sockaddr_in serv_addr;
- struct hostent *server;
- char buffer[256];
- int i;
- u32 nbytes;
- vl_api_sockclnt_create_t *mp;
- vl_api_sockclnt_create_reply_t *rp;
- char *rdptr;
- int total_bytes;
-
- for (i = 0; i < 1; i++) {
- portno = SOCKCLNT_SERVER_PORT;
- sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if (sockfd < 0)
- error("ERROR opening socket");
- server = gethostbyname("localhost");
- if (server == NULL) {
- fprintf(stderr,"ERROR, no such host\n");
- exit(0);
- }
- bzero((char *) &serv_addr, sizeof(serv_addr));
- serv_addr.sin_family = AF_INET;
- bcopy((char *)server->h_addr,
- (char *)&serv_addr.sin_addr.s_addr,
- server->h_length);
- serv_addr.sin_port = htons(portno);
- if (connect(sockfd,(const void *)&serv_addr,sizeof(serv_addr)) < 0)
- error("ERROR connecting");
-
- memset(buffer, 0, sizeof(buffer));
-
- mp = (vl_api_sockclnt_create_t *)buffer;
- mp->_vl_msg_id = ntohs(8); /* VL_API_SOCKCLNT_CREATE */
- strncpy ((char *) mp->name, "socket-test", sizeof(mp->name)-1);
- mp->name[sizeof(mp->name)-1]=0;
- mp->context = 0xfeedface;
- /* length of the message, including the length itself */
- nbytes = sizeof (*mp) + sizeof (nbytes);
- nbytes = ntohl(nbytes);
- n = write(sockfd, &nbytes, sizeof(nbytes));
- if (n < 0)
- error("ERROR writing len to socket");
- n = write(sockfd, mp, sizeof (*mp));
- if (n < 0)
- error("ERROR writing msg to socket");
-
- memset(buffer, 0, sizeof (buffer));
-
- total_bytes = 0;
- rdptr = buffer;
- do {
- n = read(sockfd,rdptr,sizeof(buffer) - (rdptr - buffer));
- if (n < 0)
- error("ERROR reading from socket");
- printf ("read %d bytes\n", n);
- total_bytes += n;
- rdptr += n;
- } while (total_bytes < sizeof (vl_api_sockclnt_create_reply_t) + 4);
-
- rp = (vl_api_sockclnt_create_reply_t *)(buffer + 4);
- /* VL_API_SOCKCLNT_CREATE_REPLY */
- if (ntohs(rp->_vl_msg_id) != 9) {
- printf ("WARNING: msg id %d\n", ntohs(rp->_vl_msg_id));
- }
-
- printf ("response %d, handle 0x%llx, index %d, context 0x%x\n",
- ntohl(rp->response), rp->handle, rp->index, rp->context);
- close(sockfd);
+ int sockfd, portno, n;
+ struct sockaddr_in serv_addr;
+ struct hostent *server;
+ char buffer[256];
+ int i;
+ u32 nbytes;
+ vl_api_sockclnt_create_t *mp;
+ vl_api_sockclnt_create_reply_t *rp;
+ char *rdptr;
+ int total_bytes;
+
+ for (i = 0; i < 1; i++)
+ {
+ portno = SOCKCLNT_SERVER_PORT;
+ sockfd = socket (AF_INET, SOCK_STREAM, 0);
+ if (sockfd < 0)
+ error ("ERROR opening socket");
+ server = gethostbyname ("localhost");
+ if (server == NULL)
+ {
+ fprintf (stderr, "ERROR, no such host\n");
+ exit (0);
+ }
+ bzero ((char *) &serv_addr, sizeof (serv_addr));
+ serv_addr.sin_family = AF_INET;
+ bcopy ((char *) server->h_addr,
+ (char *) &serv_addr.sin_addr.s_addr, server->h_length);
+ serv_addr.sin_port = htons (portno);
+ if (connect (sockfd, (const void *) &serv_addr, sizeof (serv_addr)) < 0)
+ error ("ERROR connecting");
+
+ memset (buffer, 0, sizeof (buffer));
+
+ mp = (vl_api_sockclnt_create_t *) buffer;
+ mp->_vl_msg_id = ntohs (8); /* VL_API_SOCKCLNT_CREATE */
+ strncpy ((char *) mp->name, "socket-test", sizeof (mp->name) - 1);
+ mp->name[sizeof (mp->name) - 1] = 0;
+ mp->context = 0xfeedface;
+ /* length of the message, including the length itself */
+ nbytes = sizeof (*mp) + sizeof (nbytes);
+ nbytes = ntohl (nbytes);
+ n = write (sockfd, &nbytes, sizeof (nbytes));
+ if (n < 0)
+ error ("ERROR writing len to socket");
+ n = write (sockfd, mp, sizeof (*mp));
+ if (n < 0)
+ error ("ERROR writing msg to socket");
+
+ memset (buffer, 0, sizeof (buffer));
+
+ total_bytes = 0;
+ rdptr = buffer;
+ do
+ {
+ n = read (sockfd, rdptr, sizeof (buffer) - (rdptr - buffer));
+ if (n < 0)
+ error ("ERROR reading from socket");
+ printf ("read %d bytes\n", n);
+ total_bytes += n;
+ rdptr += n;
+ }
+ while (total_bytes < sizeof (vl_api_sockclnt_create_reply_t) + 4);
+
+ rp = (vl_api_sockclnt_create_reply_t *) (buffer + 4);
+ /* VL_API_SOCKCLNT_CREATE_REPLY */
+ if (ntohs (rp->_vl_msg_id) != 9)
+ {
+ printf ("WARNING: msg id %d\n", ntohs (rp->_vl_msg_id));
+ }
+
+ printf ("response %d, handle 0x%llx, index %d, context 0x%x\n",
+ ntohl (rp->response), rp->handle, rp->index, rp->context);
+ close (sockfd);
}
- return 0;
+ return 0;
}
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */