From owner-p4-projects@FreeBSD.ORG Thu Jul 26 23:15:37 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3660216A420; Thu, 26 Jul 2007 23:15:37 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B09E716A419 for ; Thu, 26 Jul 2007 23:15:36 +0000 (UTC) (envelope-from mharvan@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9B50613C4A3 for ; Thu, 26 Jul 2007 23:15:36 +0000 (UTC) (envelope-from mharvan@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l6QNFakc082833 for ; Thu, 26 Jul 2007 23:15:36 GMT (envelope-from mharvan@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l6QNFaNk082830 for perforce@freebsd.org; Thu, 26 Jul 2007 23:15:36 GMT (envelope-from mharvan@FreeBSD.org) Date: Thu, 26 Jul 2007 23:15:36 GMT Message-Id: <200707262315.l6QNFaNk082830@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mharvan@FreeBSD.org using -f From: Matus Harvan To: Perforce Change Reviews Cc: Subject: PERFORCE change 124141 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jul 2007 23:15:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=124141 Change 124141 by mharvan@mharvan_twoflower on 2007/07/26 23:15:08 clean up fragment reassembly information on exit check gettimeofday(2) return value Affected files ... .. //depot/projects/soc2007/mharvan-mtund/mtund.src/tunneld.c#12 edit Differences ... ==== //depot/projects/soc2007/mharvan-mtund/mtund.src/tunneld.c#12 (text+ko) ==== @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include "tun_dev.h" @@ -55,6 +57,7 @@ /* fragment id for the next packet to be fragmented */ uint frag_id = 0; // TODO: randomize +/* fragmentat reassembly info list */ LIST_HEAD(frag_info_list_head, frag_info) frag_info_list = LIST_HEAD_INITIALIZER(frag_info_list); @@ -240,6 +243,10 @@ } /* fragment reassembly timeout */ + if (gettimeofday(&tv, NULL) != 0) { + errx(EX_OSERR, "gettimeofday() failed"); + //TODO: maybe fail + } LIST_FOREACH_SAFE(np, &frag_info_list, frag_infos, np_temp) { if (tv.tv_sec - np->tv_sec > FRAG_TIMEOUT) { LIST_REMOVE(np, frag_infos); @@ -331,8 +338,10 @@ memset(p->bitmap, 0, sizeof(*(p->bitmap))); /* collect information about the fragments */ - // TODO: error checking - (void) gettimeofday(&tv, NULL); + if (gettimeofday(&tv, NULL) != 0) { + errx(EX_OSERR, "gettimeofday() failed"); + //TODO: maybe fail + } p->id = frag_hdr->id; p->size = frag_hdr->size; memcpy(&p->tv_sec, &tv.tv_sec, sizeof(tv.tv_sec)); @@ -512,12 +521,22 @@ void cleanup() { plugint *pl; + struct frag_info *p; event_del(&timer_ev); event_del(&tun_ev); tun_close(tun_fd, tun_dev); + /* deallocate fragment reassembly information */ + while (!LIST_EMPTY(&frag_info_list)) { + p = LIST_FIRST(&frag_info_list); + LIST_REMOVE(p, frag_infos); + free(p->bitmap); + free(p->buf); + free(p); + } + /* deinitialize all plugins and free memory */ while(plugins) { pl = plugins;