#!/usr/bin/perl

use strict;

use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;

while(<>){
	chomp;
	my $time = $_;
	$time =~ s/.{10}(\d\d:\d\d).*/$1/;
	print "$time ";
	s/.*kernel: //;
	if(/Drop|Queue|Accept|Out/){
		my @line = split / /;
		for (@line){
			if(/Drop/){
				my @cur = split /:/;
				print RED "$cur[0]";
				$cur[1] =~ s/IN=//;
				print ":$cur[1]";
				print BOLD GREEN " => ";
			}elsif(/Queue/){
				my @cur = split /:/;
				print BOLD MAGENTA "$cur[0]";
				$cur[1] =~ s/IN=//;
				print ":$cur[1]";
				print BOLD GREEN " => ";
			}elsif(/Accept/){
				my @cur = split /:/;
				print BOLD GREEN "$cur[0]";
				$cur[1] =~ s/IN=//;
				print ":$cur[1]";
				print BOLD GREEN " => ";
			}elsif(/Out/){
				my @cur = split /:/;
				print BOLD CYAN "$cur[0]";
				$cur[1] =~ s/IN=//;
				print ":$cur[1]";
				print BOLD GREEN " => ";
			}elsif(/OUT/){
				s/OUT=//;
				print "$_ ";
			}elsif(/MAC/){
				s/ff:ff:ff:ff:ff:ff:|:08:00|MAC=//g;
				print "$_ ";
			}elsif(/SRC/){
				s/SRC=//;
				s/\.(\d)$/.0$1/;
				print CYAN "$_";
				print BOLD GREEN " => ";
			}elsif(/DST/){
				s/DST=//;
				s/\.(\d)$/.0$1/;
				print YELLOW "$_ ";
			}elsif(/LEN/){
				s/EN//;
				print MAGENTA "$_ ";
			}elsif(/TTL/){
				print BOLD BLUE "$_ ";
			}elsif(/PROTO/){
				s/PROTO=//;
				print GREEN "$_ ";
			}elsif(/SPT/){
				s/PT//;
				print BOLD CYAN "$_ ";	
			}elsif(/DPT/){
				s/PT//;
				print BOLD YELLOW "$_ ";
			}
		}
		print "\n";
	}else{
		print BOLD RED ON_WHITE $_;
		print "\n";
	}
}
