Incompatibility an old c and gcc 4.3.1.urgency plz
I couldn't compile this code in gcc (SUSE Linux) 4.3.1 20080507.
got me these!
sniffer.c: In function ‘int CreateRawSocket(int)':
sniffer.c:16: error: ‘htons' was not declared in this scope
sniffer.c: In function ‘int BindRawSocketToInterface(char*, int, int)':
sniffer.c:31: error: ‘bzero' was not declared in this scope
sniffer.c:37: error: ‘strncpy' was not declared in this scope
sniffer.c:48: error: ‘htons' was not declared in this scope
sniffer.c: In function ‘int main(int, char**)':
sniffer.c:103: error: invalid conversion from ‘int*' to ‘socklen_t*'
sniffer.c:103: error: initializing argument 6 of ‘ssize_t recvfrom(int, void*, size_t, int, sockaddr*, socklen_t*)'
how i can fix it?
Code:
#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<features.h>
#include<linux/if_packet.h>
#include<linux/if_ether.h>
#include<errno.h>
#include<sys/ioctl.h>
#include<net/if.h>
int CreateRawSocket(int protocol_to_sniff)
{
int rawsock;
if((rawsock = socket(PF_PACKET, SOCK_RAW, htons(protocol_to_sniff)))== -1)
{
perror("Error creating raw socket: ");
exit(-1);
}
return rawsock;
}
int BindRawSocketToInterface(char *device, int rawsock, int protocol)
{
struct sockaddr_ll sll;
struct ifreq ifr;
bzero(&sll, sizeof(sll));
bzero(&ifr, sizeof(ifr));
/* First Get the Interface Index */
strncpy((char *)ifr.ifr_name, device, IFNAMSIZ);
if((ioctl(rawsock, SIOCGIFINDEX, &ifr)) == -1)
{
printf("Error getting Interface index !\n");
exit(-1);
}
/* Bind our raw socket to this interface */
sll.sll_family = AF_PACKET;
sll.sll_ifindex = ifr.ifr_ifindex;
sll.sll_protocol = htons(protocol);
if((bind(rawsock, (struct sockaddr *)&sll, sizeof(sll)))== -1)
{
perror("Error binding raw socket to interface\n");
exit(-1);
}
return 1;
}
void PrintPacketInHex(unsigned char *packet, int len)
{
unsigned char *p = packet;
printf("\n\n---------Packet---Starts----\n\n");
while(len--)
{
printf("%.2x ", *p);
p++;
}
printf("\n\n--------Packet---Ends-----\n\n");
}
main(int argc, char **argv)
{
int raw;
unsigned char packet_buffer[2048];
int len;
int packets_to_sniff;
struct sockaddr_ll packet_info;
int packet_info_size = sizeof(packet_info);
/* create the raw socket */
raw = CreateRawSocket(ETH_P_IP);
/* Bind socket to interface */
BindRawSocketToInterface(argv[1], raw, ETH_P_IP);
/* Get number of packets to sniff from user */
packets_to_sniff = atoi(argv[2]);
/* Start Sniffing and print Hex of every packet */
while(packets_to_sniff--)
{
if((len = recvfrom(raw, packet_buffer, 2048, 0, (struct sockaddr*)&packet_info, &packet_info_size)) == -1)
{
perror("Recv from returned -1: ");
exit(-1);
}
else
{
/* Packet has been received successfully !! */
PrintPacketInHex(packet_buffer, len);
}
}
return 0;
}
On a very new (11.31) hpux machine, I can no longer execute shell fragements like:
if ; then
. .profile.foo
fi
and get "ksh: test: argument expected"
if I convert this to -d or -f as appropriate (which I've not had to do on older versions of hpux (11.23) nor any other unix platform... (9 Replies)
plz help me with this question :
1111 | aaaa | pppp | 23/9/87
3333 | dddd | oooo | 6/9/8
4444 | gggg | rrrr | 5/8/9
5555 | qqqq | eeee
ans:
5555 | qqqq | eeee
depending upon how many "|" are in the question
be quick.. (8 Replies)
I am using OpenSSH on my sun servers.
There is another suite of sun servers attempting to SSH into my machines.
I am running ssh -vv:
OpenSSH_4.4p1, OpenSSL 0.9.8d 28 Sep 2006
the other guy is running the sun version of ssh (i don't know what/if any differences there are between... (7 Replies)
AIM- Install Oracle 11g on Solaris using VMWare
Steps
1.Logged on as root
2.Created subfolders à /usr/local/bin & /usr/local/bin/gcc
3.Downloaded gcc & libiconv & unzipped them on my harddrive & burnt them on CD
4.Copied files from CD to /usr/local/bin/gcc
5.Terminal (root) à pkgadd -d... (8 Replies)
Hello People ! :))I'm Sorry may be offtopic, I want ask you to help me with this problemwhere I can find FAQ about DB2.Tell me where I can find it.Good Luck !!! %) (1 Reply)
i'm pretty new to unix programming. i just wanna know how exactly fork(), waitpid() works. i have read some from the book, but it's still confusing. especially with those < 0 and == 0. plz help!!!! (1 Reply)
Ok, here's the deal.
I'm running WinXp.
I was merging two partitions using partition magic when I lost power to my box.
I have very IMPORTANT data on one partition and the other is blank, hence the attempted merge.
After the power loss, I booted my system up. Now, I was getting errors... (2 Replies)