/* This file is part of the Linux Trace Toolkit viewer
- * Copyright (C) 2009 Benjamin Poirier <benjamin.poirier@polymtl.ca>
+ * Copyright (C) 2009, 2010 Benjamin Poirier <benjamin.poirier@polymtl.ca>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License Version 2 as
- * published by the Free Software Foundation;
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 2.1 of the License, or (at
+ * your option) any later version.
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- * MA 02111-1307, USA.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef HAVE_CONFIG_H
#include "data_structures.h"
-#ifndef g_info
-#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
-#endif
-
// TCP sequence numbers use clock arithmetic, these comparison functions take
// that into account
#define SEQ_LT(a,b) ((int32_t)((a)-(b)) < 0)
list= (GQueue*) data;
- g_debug("XXXX gdnTCPSegmentListDestroy\n");
-
g_queue_foreach(list, &gfTCPSegmentDestroy, NULL);
g_queue_free(list);
}
*/
void gfTCPSegmentDestroy(gpointer data, gpointer user_data)
{
- g_debug("XXXX gfTCPSegmentDestroy\n");
destroyTCPSegment((Message*) data);
}
{
TCPEvent* inE, *outE;
- g_debug("XXXX destroyTCPSegment");
segment->print(segment);
g_assert(segment->inE != NULL && segment->outE != NULL);
guint ghfDatagramKeyHash(gconstpointer key)
{
DatagramKey* datagramKey;
+ union {
+ uint8_t byteKey[8];
+ uint32_t hashableKey[2];
+ } dataKey;
uint32_t a, b, c;
datagramKey= (DatagramKey*) key;
+ memcpy(dataKey.byteKey, datagramKey->dataKey, sizeof(dataKey.byteKey));
a= datagramKey->saddr;
b= datagramKey->daddr;
mix(a, b, c);
a+= datagramKey->ulen; // 16 bits left here
- b+= *((uint32_t*) datagramKey->dataKey);
- c+= *((uint32_t*) ((void*) datagramKey->dataKey + 4));
+ b+= dataKey.hashableKey[0];
+ c+= dataKey.hashableKey[1];
final(a, b, c);
return c;