ether promisc (fwd)
David Trcka
trcka na poda.cz
Neděle Září 16 23:10:43 CEST 2001
Sorry, nejak jsem si nevsim, ze tahle zprava lezi v mem mailboxu a do
listu nejak nedorazila. Takze tady je tedy to, na co jsem pred chvili
odpovidal.
--
David Trcka, network administrator
PODA s.r.o., Internet Service Provider
Ostrava, 28. rijna 150, The Czech Republic
Voice/Fax: +420 69 6612600
PGP KeyID: A80B0051
---------- Forwarded message ----------
Date: Sun, 16 Sep 2001 22:58:59 +0200
From: Michal Ludvig <michal-linux na logix.cz>
To: David Trcka <trcka na poda.cz>
Newsgroups: cz.comp.linux
Subject: Re: ether promisc
David Trcka wrote:
> potrebuju uvest jedno ethernetove zarizeni do promiskuitniho rezimu a mam
> k dispozici pouze utilitku ip (iproute2-ss001007) a nebo /proc, bohuzel
> ani v jednom jsem to nenasel. Opakuju, ifconfig _nemam_. Jadro je rada
> 2.2.x. Dik za pomoc.
A co takhle staticky ifconfig slinkovany s dietlibc? Ten by mohl mit tak
kolem 30kB (staticky slinkovany!). Kdyby i tohle bylo moc, tak na
nastaveni interfacu do promisc staci:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/if_ether.h>
int main()
{
int sock;
struct ifreq ethreq;
if ( (sock=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP)))<0)
{ perror("socket"); exit(1); }
strncpy(ethreq.ifr_name,"eth0",IFNAMSIZ);
if (ioctl(sock,SIOCGIFFLAGS,ðreq)==-1)
{ perror("ioctl"); close(sock); exit(1); }
ethreq.ifr_flags|=IFF_PROMISC;
// ethreq.ifr_flags&=~IFF_PROMISC; /* pro zruseni promisc */
if (ioctl(sock,SIOCSIFFLAGS,ðreq)==-1)
{ perror("ioctl"); close(sock); exit(1); }
close(sock);
return 0;
}
a tohle slinkovat s dietlibc. Staticky to ma 4764 bytes :-) A funguje
to. Jestli chcete, tak vam poslu binarku.
Michal Ludvig
Další informace o konferenci Linux