Main Page | Directories | File List | Globals

bridge.c File Reference

#include <stdio.h>
#include <netinet/in.h>
#include <netdb.h>
#include <linux/if_ether.h>
#include <linux/if_packet.h>
#include <linux/if.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>

Include dependency graph for bridge.c:

Go to the source code of this file.

Functions

int main (int argc, char **argv)


Function Documentation

int main int  argc,
char **  argv
 

Definition at line 16 of file bridge.c.

References fd, printf(), and sprintf().

00017 {
00018     struct sockaddr_ll sll;
00019     int sin_len = sizeof(sll);
00020     char fd_str[10];
00021     int fd;
00022     struct ifreq ifr;
00023 
00024     if (argc != 2) {
00025         printf("You must specify network interface name\n");
00026         return -1;
00027     }
00028     
00029     if ((fd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0) {
00030         printf("Can create AF_PACKET RAW socket\n");
00031         return -1;
00032     }
00033 
00034     strcpy(ifr.ifr_name, argv[1]);
00035     ioctl (fd, SIOCGIFINDEX, &ifr);
00036 
00037     sll.sll_family   = AF_PACKET;
00038     sll.sll_ifindex  = ifr.ifr_ifindex;
00039     sll.sll_protocol = htons(ETH_P_ALL);
00040     
00041     printf("Binding to %s\n", argv[1]);
00042     bind(fd, (struct sockaddr *)&sll, sin_len);
00043 
00044     sprintf(fd_str, "%d", fd);
00045     printf("%d\n", execl("/bin/bash", "bash", "/mnt/hdc5/src/agnix-sf/emulators/qemu/start.sh", fd_str, NULL));
00046 }

Here is the call graph for this function:

Dokumentacje wygenerowano programem Doxygen 1.4.2 dla projektu Agnix