Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

adtrace.c File Reference

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pcap.h>
#include "../../config.h"
#include "ip.h"
#include "ether.h"
#include "ethertype.h"

Include dependency graph for adtrace.c:

Include dependency graph

Go to the source code of this file.

Functions

const u_char * printEAddr (const u_char *pkt, u_char *endp)
void printIPAddr (const u_char *pkt, u_char *endp)
void handler (u_char *user, const struct pcap_pkthdr *head, const u_char *packet)
void usage (char *av[])
int main (int argc, char *argv[])

Variables

pcap_tp


Function Documentation

void handler u_char *  user,
const struct pcap_pkthdr head,
const u_char *  packet
 

Definition at line 48 of file adtrace.c.

References pcap_pkthdr::caplen, packet, printEAddr(), and printIPAddr().

Referenced by Event::Dispatch(), main(), RemoteSerializer::ProcessRequestEventsMsg(), EventRegistry::Register(), ID::SetVal(), and Serializer::UnserializeCall().

00048                                                                                 {
00049   u_char* endp;
00050 
00051   endp =(u_char*) packet + head->caplen;
00052   packet = printEAddr(packet, endp);
00053   if (packet)
00054     printIPAddr(packet, endp);
00055 }

int main int  argc,
char *  argv[]
 

Definition at line 63 of file adtrace.c.

References DLT_EN10MB, file, fputs(), handler(), p, pcap_close(), pcap_datalink(), PCAP_ERRBUF_SIZE, pcap_loop(), pcap_open_offline(), and usage().

00064 {
00065   char *file;
00066   char errbuf[PCAP_ERRBUF_SIZE];
00067   u_char* pkt, endp; 
00068   struct pcap_pkthdr *head;
00069 
00070   if ( argc != 2 ) 
00071           usage(argv);
00072 
00073   file = argv[1];
00074 
00075   p = pcap_open_offline(file, errbuf);
00076   if(p==NULL){
00077     fprintf (stderr, "cannot open %s: %s\n", file, errbuf);
00078     exit(2);
00079   }
00080   
00081   if (pcap_datalink(p) != DLT_EN10MB){
00082     fputs ("sorry, currently only ethernet links supported\n", stderr);
00083     exit(1); //if it is not ethernet we are watching we won't have MACs
00084   }
00085 
00086   pcap_loop(p, -1, handler, NULL);
00087   pcap_close(p);
00088   return(0);
00089 }

const u_char* printEAddr const u_char *  pkt,
u_char *  endp
 

Definition at line 16 of file adtrace.c.

References ep, ETHER_ADDR_LEN, ETHER_HDRLEN, ETHERTYPE_IP, and printf().

Referenced by handler().

00016                                                           {
00017   const struct ether_header *ep;
00018   int i=0;
00019   ep = (const struct ether_header*) pkt;
00020 
00021   if (pkt+ETHER_HDRLEN > endp ||
00022       ntohs(ep->ether_type) != ETHERTYPE_IP){
00023     return 0;
00024   }
00025 
00026   for (i = 0; i<ETHER_ADDR_LEN; i++){
00027     if (i>0) putchar(':');
00028     printf("%02x", ep->ether_shost[i]);
00029   }
00030   putchar (' ');
00031   for (i = 0; i<ETHER_ADDR_LEN; i++){
00032     if (i>0) putchar(':');
00033     printf("%02x", ep->ether_dhost[i]);
00034   }
00035   putchar(' ');
00036   return (pkt+ETHER_HDRLEN);
00037 }

void printIPAddr const u_char *  pkt,
u_char *  endp
 

Definition at line 39 of file adtrace.c.

References fputs(), and puts().

Referenced by handler().

00039                                                  {
00040   const struct ip* iph;
00041   if (pkt+sizeof(struct ip) > endp) return;
00042   iph = (const struct ip*) pkt;
00043   fputs ((char*) inet_ntoa(iph->ip_src), stdout);
00044   putchar(' ');
00045   puts ((char*) inet_ntoa(iph->ip_dst));
00046 }

void usage char *  av[]  ) 
 

Definition at line 57 of file adtrace.c.

00058 {
00059         fprintf(stderr,"usage: %s filename \n", av[0]);
00060         exit(1);
00061 }


Variable Documentation

pcap_t* p
 

Definition at line 14 of file adtrace.c.

Referenced by TCP_Rewriter::AbortPackets(), PacketSortConnPQ::Add(), add_or_find_if(), Rule::AddPattern(), addr2host(), Rule::AddRequires(), AnonymizeIPAddr::Anonymize(), bpf_dump(), bpf_filter(), bpf_image(), bpf_validate(), bro_prefixes(), PriorityQueue::BubbleUp(), RuleMatcher::BuildRegEx(), c__next_word(), c__prev_word(), cacheaddr(), ce__isword(), RemoteSerializer::CompleteHandshake(), RemoteSerializer::Connect(), TypeDecl::ConstructorFuncPrototype(), convert(), convert_code_r(), cv__endword(), cv__isword(), cv_next_word(), cv_prev_word(), DeleteConnPQ(), ConnCompressor::DoExpire(), GnutellaConn::Done(), TCP_Rewriter::DumpPacket(), ed_delete_prev_word(), em_delete_next_word(), escape_URI_char(), ether2host(), EventHandlerPtr::EventHandlerPtr(), find_ud(), OSFingerprint::FindMatch(), finish_parse(), fmt_bytes(), gen_bcmp(), TypeDecl::genConstructorFunc(), TypeDecl::genParamPrivDecls(), TypeDecl::genParamPubDecls(), RemoteSerializer::GotPacket(), HashKey::HashKey(), history_def_add(), history_def_clear(), history_def_curr(), history_def_enter(), history_def_first(), history_def_init(), history_def_last(), history_def_next(), history_def_prev(), history_def_set(), history_enter_data(), TCP_Rewriter::HoldPacket(), install_bpf_program(), SSL_Interpreter::Is_Orig(), TCP_RewriterEndpoint::IsPlaceHolderPacket(), key__decode_str(), OSFingerprint::load_config(), DFA_State_Cache::Lookup(), lookupaddr(), main(), ConnCompressor::MakeMapPtr(), map_addfunc(), map_bind(), md5_append(), merge(), new_block(), new_stmt(), TCP_ContentLine::NextNewLine(), TCP_Rewriter::NextPacket(), TCP_RewriterEndpoint::NextPacket(), nit_setflags(), ones_complement_checksum(), H3< T, N >::operator()(), EventHandlerPtr::operator=(), parse__escape(), pcap_close(), pcap_close_linux(), pcap_compile(), pcap_compile_nopcap(), pcap_datalink(), pcap_dispatch(), pcap_dump_close(), pcap_dump_open(), pcap_file(), pcap_fileno(), pcap_geterr(), pcap_getnonblock(), pcap_is_swapped(), pcap_loop(), pcap_major_version(), pcap_minor_version(), pcap_nametoaddr(), pcap_nametoeproto(), pcap_nametoproto(), pcap_next(), pcap_offline_read(), pcap_open_dead(), pcap_open_live(), pcap_open_offline(), pcap_perror(), pcap_read(), pcap_setfilter(), pcap_setnonblock(), pcap_snapshot(), pcap_stats(), PortVal::Port(), PortVal::PortVal(), pre_execute_stmt(), TypeDecl::Prepare(), RemoteSerializer::ProcessRequestEventsMsg(), RemoteSerializer::ProcessStatsMsg(), prompt_print(), prompt_set(), TCP_SourcePacketWriter::Purge(), re_update_line(), readloop(), DbgBreakpoint::RemoveFromGlobalMap(), RemoteSerializer::RequestEvents(), TCP_Rewriter::RewriteTCPOption(), RemoteSerializer::SendAccess(), GnutellaConn::SendEvents(), RemoteSerializer::SendPacket(), Serializer::Serialize(), RemoteSerializer::SetAcceptState(), RemoteSerializer::SetCompressionLevel(), TCP_RewriterEndpoint::SetNextPacket(), TCP_Endpoint::SetPeer(), SSL_InterpreterEndpoint::SetPeer(), sf_next_packet(), strerror(), strpbrk_n(), TCP_RewriteSlot::TCP_RewriteSlot(), term_bind_arrow(), tok_line(), Packet::Unserialize(), Serializer::UnserializePacket(), PortVal::ValDescribe(), and ChunkedIOFd::Write().


Generated on Wed Sep 14 02:57:01 2005 for bro_docs by doxygen 1.3.5