/* * checkpattern.{cc,hh} -- element checks packets generated by SendPattern * Robert Morris * * Copyright (c) 1999-2000 Massachusetts Institute of Technology * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, subject to the conditions * listed in the Click LICENSE file. These conditions include: you must * preserve this copyright notice, and you cannot mention the copyright * holders in advertising related to the Software without their permission. * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This * notice is a summary of the Click LICENSE file; the license in that file is * legally binding. */ #include #include "checkpattern.hh" #include #include CLICK_DECLS CheckPattern::CheckPattern() { _len = 1; } CheckPattern::~CheckPattern() { } int CheckPattern::configure(Vector &conf, ErrorHandler *errh) { return cp_va_parse(conf, this, errh, cpUnsigned, "packet length", &_len, cpEnd); } Packet * CheckPattern::simple_action(Packet *p) { unsigned i; if(p->length() != _len) click_chatter("CheckPattern: p->length() %d _len %d", p->length(), _len); for(i = 0; i < _len && i < p->length(); i++){ if((p->data()[i]&0xff) != (i&0xff)){ click_chatter("CheckPattern: i=%d pkt %02x wanted %02x", i, p->data()[i] & 0xff, i & 0xff); break; } } return(p); } CLICK_ENDDECLS EXPORT_ELEMENT(CheckPattern)