|
@@ -14,12 +14,56 @@
|
|
|
*/
|
|
|
|
|
|
|
|
|
-// Serialize with protobuf-c
|
|
|
+#include <sys/types.h>
|
|
|
+#include <sys/socket.h>
|
|
|
+#include <netinet/in.h>
|
|
|
+#include <arpa/inet.h>
|
|
|
+#include <unistd.h>
|
|
|
+#include <stdlib.h>
|
|
|
+#include <stdio.h>
|
|
|
+#include <string.h>
|
|
|
+
|
|
|
// Request(local pointer, remote pointer, size)
|
|
|
// make ping pong example
|
|
|
+myco_network_fetch_resource(void *local_pointer, pid_t local_pid, int size) {
|
|
|
+ printf("\nTransferring data over network!\n");
|
|
|
+
|
|
|
+ // Create local memory for transfer
|
|
|
+ void *resource_pointer = malloc(size);
|
|
|
+
|
|
|
+ // Create socket for transfer
|
|
|
+ int create_socket, new_socket;
|
|
|
+ socklen_t addrlen;
|
|
|
+ char *buffer = malloc (size);
|
|
|
+ //ssize_t size;
|
|
|
+ struct sockaddr_in address;
|
|
|
+ const int y = 1;
|
|
|
+ char *command;
|
|
|
+ char *agent;
|
|
|
+ char *resource;
|
|
|
+
|
|
|
+ printf ("\e[2J");
|
|
|
+ create_socket=socket (AF_INET, SOCK_STREAM, 0);
|
|
|
+ setsockopt( create_socket, SOL_SOCKET,
|
|
|
+ SO_REUSEADDR, &y, sizeof(int));
|
|
|
+ address.sin_family = AF_INET;
|
|
|
+ address.sin_addr.s_addr = INADDR_ANY;
|
|
|
+ address.sin_port = htons (15001);
|
|
|
+ if (bind ( create_socket,
|
|
|
+ (struct sockaddr *) &address,
|
|
|
+ sizeof (address)) != 0) {
|
|
|
+ printf( "Port already taken!\n");
|
|
|
+ }
|
|
|
+ listen (create_socket, 5);
|
|
|
+ addrlen = sizeof (struct sockaddr_in);
|
|
|
+
|
|
|
+ // Read memory over network
|
|
|
|
|
|
-myco_network_fetch_resource(void *local_pointer, char name[RESOURCE_NAME_LENGTH], int size) {
|
|
|
- printf("Transferring data over network!\n");
|
|
|
+ // Write memory to Agent
|
|
|
+ if (myco_write_memory(local_pid, local_pointer, size, (void *)resource_pointer, size) == -1) {
|
|
|
+ printf("ERROR: %s\n", strerror(errno));
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|