summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proto_ethernet.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/proto_ethernet.c b/proto_ethernet.c
index 1d5d684..3b3a9e6 100644
--- a/proto_ethernet.c
+++ b/proto_ethernet.c
@@ -1,6 +1,7 @@
/*
* netsniff-ng - the packet sniffing beast
* Copyright 2009, 2010 Daniel Borkmann.
+ * Copyright 2014 Tobias Klauser
* Subject to the GPL, version 2.
*/
@@ -14,6 +15,29 @@
#include "pkt_buff.h"
#include "oui.h"
+static inline bool is_multicast_ether_addr(const uint8_t *mac)
+{
+ return mac[0] & 0x01;
+}
+
+static inline bool is_broadcast_ether_addr(const uint8_t *mac)
+{
+ return (mac[0] & mac[1] & mac[2] & mac[3] & mac[4] & mac[5]) == 0xff;
+}
+
+static const char *ether_lookup_addr(uint8_t *mac)
+{
+ if (is_multicast_ether_addr(mac)) {
+ if (is_broadcast_ether_addr(mac))
+ return "Broadcast";
+ else
+ return "Multicast";
+ }
+
+ /* found no matching address, so look up the vendor from OUI */
+ return lookup_vendor_str((mac[0] << 16) | (mac[1] << 8) | mac[2]);
+}
+
static void ethernet(struct pkt_buff *pkt)
{
char *type;
@@ -41,11 +65,7 @@ static void ethernet(struct pkt_buff *pkt)
tprintf(") ]\n");
tprintf(" [ Vendor ");
- tprintf("(%s => %s)",
- lookup_vendor_str((src_mac[0] << 16) | (src_mac[1] << 8) |
- src_mac[2]),
- lookup_vendor_str((dst_mac[0] << 16) | (dst_mac[1] << 8) |
- dst_mac[2]));
+ tprintf("(%s => %s)", ether_lookup_addr(src_mac), ether_lookup_addr(dst_mac));
tprintf(" ]\n");
pkt_set_proto(pkt, &eth_lay2, ntohs(eth->h_proto));
x/net-next.git/log/include/sound/ak4531_codec.h?id=e9ad5e7d8d3cf55ceb204b0f7a26c89bfd4b41fe'>logplain -rw-r--r--ak4641.h622logplain -rw-r--r--ak4xxx-adda.h3416logplain -rw-r--r--alc5623.h497logplain -rw-r--r--asequencer.h3670logplain -rw-r--r--asound.h1285logplain -rw-r--r--asoundef.h17098logplain -rw-r--r--atmel-abdac.h639logplain -rw-r--r--atmel-ac97c.h1342logplain -rw-r--r--compress_driver.h6772logplain -rw-r--r--control.h8704logplain -rw-r--r--core.h14380logplain -rw-r--r--cs35l33.h1034logplain -rw-r--r--cs35l34.h887logplain -rw-r--r--cs4231-regs.h8480logplain -rw-r--r--cs4271.h1417logplain -rw-r--r--cs42l52.h738logplain -rw-r--r--cs42l56.h1192logplain -rw-r--r--cs42l73.h507logplain -rw-r--r--cs8403.h8833logplain -rw-r--r--cs8427.h10649logplain -rw-r--r--da7213.h1178logplain -rw-r--r--da7218.h2681logplain -rw-r--r--da7219-aad.h2476logplain -rw-r--r--da7219.h1064logplain -rw-r--r--da9055.h914logplain -rw-r--r--designware_i2s.h2249logplain -rw-r--r--dmaengine_pcm.h6157logplain -rw-r--r--emu10k1.h91396logplain -rw-r--r--emu10k1_synth.h1382logplain -rw-r--r--emu8000.h4109logplain -rw-r--r--emu8000_reg.h10459logplain -rw-r--r--emux_legacy.h5503logplain -rw-r--r--emux_synth.h7649logplain -rw-r--r--es1688.h3618logplain -rw-r--r--gus.h20691logplain -rw-r--r--hda_chmap.h2621logplain -rw-r--r--hda_hwdep.h1412logplain -rw-r--r--hda_i915.h1645logplain -rw-r--r--hda_register.h9475logplain -rw-r--r--hda_regmap.h6714logplain -rw-r--r--hda_verbs.h17130logplain -rw-r--r--hdaudio.h18455logplain -rw-r--r--hdaudio_ext.h7119logplain -rw-r--r--hdmi-codec.h2290logplain -rw-r--r--hwdep.h2624logplain -rw-r--r--i2c.h3555logplain -rw-r--r--info.h7584logplain