Browse Source

completed implementation and evaluation sections, expanded discussion of optimization

cbocovic 9 years ago
parent
commit
ed3e471f2a
1 changed files with 0 additions and 103 deletions
  1. 0 103
      server/listen.c

+ 0 - 103
server/listen.c

@@ -1,103 +0,0 @@
-#include <pcap.h>
-#include <stdio.h>
-
-#define macaddr "08:00:27:e8:9d:d4"
-
-void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);
-
-void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet){
-	pcap_t *handle;
-	char errbuf[BUFSIZ];
-	char *writedev = args;
-	int i;
-
-	handle = pcap_open_live(writedev, BUFSIZ, 1, 1000, errbuf);
-	if (handle == NULL){
-		fprintf(stderr, "Couldn't open device %s: %s\n", writedev, errbuf);
-	}
-
-	if((pcap_inject(handle, packet, header->len)) < 0 ){
-		fprintf(stderr, "Error: %s\n", pcap_geterr(handle));
-	}
-	//printf("Wrote %d bytes.\n", bytes_written);
-
-	pcap_close(handle);
-
-}
-
-int usage(void){
-	printf("Usage: slitheen-proxy [internal network interface] [NAT interface]\n");
-}
-
-int main(int argc, char *argv[]){
-	pid_t pid;
-	char filter1[33];
-	char filter2[33];
-
-	char *dev1 = NULL; /* Device that leads to the internal network */
-	char *dev2 = NULL; /* Device that leads out to the world */
-
-	if (argc != 3) { 
-		usage();
-		return(2);
-	}
-	dev1 = argv[1];
-	dev2 = argv[2];
-
-	snprintf(filter1, 33, "ether src host %s", macaddr);
-	snprintf(filter2, 33, "ether dst host %s", macaddr);
-
-	pid = fork();
-	if (pid < 0) {
-		fprintf(stderr, "Fork call failed.\n");
-		return(2);
-	}
-	if (pid == 0) {
-		sniff_packets(dev1, dev2, filter1);		
-	} else {
-		sniff_packets(dev2, dev1, filter2);
-	}
-	
-	return(0);
-}
-
-int sniff_packets(char *readdev, char *writedev, char *filter){
-	pcap_t *handle;
-	char errbuf[BUFSIZ];
-	struct bpf_program fp;
-	bpf_u_int32 mask;
-	bpf_u_int32 net;
-
-	if (pcap_lookupnet(readdev, &net, &mask, errbuf) == -1){
-		fprintf(stderr, "Can't get netmask for device %s\n", readdev);
-		return(2);
-	}
-
-	handle = pcap_open_live(readdev, BUFSIZ, 1, 1000, errbuf);
-	if (handle == NULL){
-		fprintf(stderr, "Couldn't open device %s: %s\n", readdev, errbuf);
-	}
-
-	if(pcap_datalink(handle) != DLT_EN10MB) {
-		fprintf(stderr, "Device %s does not provide Ethernet headers - not supported\n", readdev);
-		return(2);
-	}
-
-	if(pcap_compile(handle, &fp, filter, 0 , net) == -1){
-		fprintf(stderr, "Couldn't parse filter %s: %s\n", filter, pcap_geterr(handle));
-		return(2);
-	}
-
-	if (pcap_setfilter(handle, &fp) == -1) {
-		fprintf(stderr, "Couldn't install filter %s: %s\n", filter, pcap_geterr(handle));
-		return(2);
-	}
-	printf("Now listening on %s.\n", readdev);
-
-	/*callback function*/
-	pcap_loop(handle, -1, got_packet, writedev);
-
-	/*Sniff a packet*/
-	pcap_close(handle);
-	return(0);
-}