On 7/17/06, Rahul Sharma <[EMAIL PROTECTED]> wrote:
On 7/17/06, turcu septimiu <[EMAIL PROTECTED]> wrote: > > > --- Rahul Sharma <[EMAIL PROTECTED]> wrote: > > > Hi Nick, > > Thank for your replies. > > But in that case I have to search the dhcpd enteries > > and then parse the > > /var/log/ daemon. > > But I Just want to create another file with the > > format i like. > > Plz anybody help!!!!!!! > > Thanks in advance > > Rahul > > > > On 7/14/06, Nick Guenther <[EMAIL PROTECTED]> wrote: > > > > > > On 7/13/06, Rahul Sharma > > <[EMAIL PROTECTED]> wrote: > > > > /* $OpenBSD: db.c,v 1.10 2004/09/16 18:35:42 > > deraadt Exp $ */ > > > > > > > > /* > > > > * Persistent database management routines for > > DHCPD. > > > > */ > > > > > > > > /* > > > > * Copyright (c) 1995, 1996 The Internet > > Software Consortium. > > > > * All rights reserved. > > > > * > > > > * Redistribution and use in source and binary > > forms, with or without > > > > * modification, are permitted provided that the > > following conditions > > > > * are met: > > > > * > > > > * 1. Redistributions of source code must retain > > the above copyright > > > > * notice, this list of conditions and the > > following disclaimer. > > > > * 2. Redistributions in binary form must > > reproduce the above copyright > > > > * notice, this list of conditions and the > > following disclaimer in > > > the > > > > * documentation and/or other materials > > provided with the > > > distribution. > > > > * 3. Neither the name of The Internet Software > > Consortium nor the names > > > > * of its contributors may be used to endorse > > or promote products > > > derived > > > > * from this software without specific prior > > written permission. > > > > * > > > > * THIS SOFTWARE IS PROVIDED BY THE INTERNET > > SOFTWARE CONSORTIUM AND > > > > * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR > > IMPLIED WARRANTIES, > > > > * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED > > WARRANTIES OF > > > > * MERCHANTABILITY AND FITNESS FOR A PARTICULAR > > PURPOSE ARE > > > > * DISCLAIMED. IN NO EVENT SHALL THE INTERNET > > SOFTWARE CONSORTIUM OR > > > > * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, > > INDIRECT, INCIDENTAL, > > > > * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > > (INCLUDING, BUT NOT > > > > * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > > OR SERVICES; LOSS OF > > > > * USE, DATA, OR PROFITS; OR BUSINESS > > INTERRUPTION) HOWEVER CAUSED AND > > > > * ON ANY THEORY OF LIABILITY, WHETHER IN > > CONTRACT, STRICT LIABILITY, > > > > * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > > ARISING IN ANY WAY OUT > > > > * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED > > OF THE POSSIBILITY OF > > > > * SUCH DAMAGE. > > > > * > > > > * This software has been written for the > > Internet Software Consortium > > > > * by Ted Lemon <[EMAIL PROTECTED]> in > > cooperation with Vixie > > > > * Enterprises. To learn more about the > > Internet Software Consortium, > > > > * see ``http://www.vix.com/isc''. To learn > > more about Vixie > > > > * Enterprises, see ``http://www.vix.com''. > > > > */ > > > > > > > > #include "dhcpd.h" > > > > > > > > FILE *db_file; > > > > FILE *abc; > > > > static int counting = 0; > > > > static int count = 0; > > > > time_t write_time; > > > > > > > > /* > > > > * Write the specified lease to the current > > lease database file. > > > > */ > > > > int > > > > write_lease(struct lease *lease) > > > > { > > > > struct tm *t; > > > > char tbuf[64]; > > > > int errors = 0; > > > > int i; > > > > > > > > if (counting) > > > > ++count; > > > > errno = 0; > > > > fprintf(db_file, "lease %s {\n", > > piaddr(lease->ip_addr)); > > > > fprintf(abc,"%s\t",piaddr(lease->ip_addr)); > > > > if (errno) > > > > ++errors; > > > > > > > > t = gmtime(&lease->starts); > > > > snprintf(tbuf, sizeof(tbuf), "%d > > %d/%02d/%02d %02d:%02d:%02d;", > > > > t->tm_wday, t->tm_year + 1900, t->tm_mon > > + 1, t->tm_mday, > > > > t->tm_hour, t->tm_min, t->tm_sec); > > > > > > > > errno = 0; > > > > fprintf(db_file, "\tstarts %s\n", tbuf); > > > > fprintf(abc, "%s\t", tbuf); > > > > if (errno) > > > > ++errors; > > > > > > > > t = gmtime(&lease->ends); > > > > snprintf(tbuf, sizeof(tbuf), "%d > > %d/%02d/%02d %02d:%02d:%02d;", > > > > t->tm_wday, t->tm_year + 1900, t->tm_mon > > + 1, t->tm_mday, > > > > t->tm_hour, t->tm_min, t->tm_sec); > > > > > > > > errno = 0; > > > > fprintf(db_file, "\tends %s", tbuf); > > > > fprintf(abc, "%s\t", tbuf); > > > > if (errno) > > > > ++errors; > > > > > > > > if (lease->hardware_addr.hlen) { > > > > errno = 0; > > > > fprintf(db_file, "\n\thardware %s %s;", > > > > > > hardware_types[lease->hardware_addr.htype], > > > > > > print_hw_addr(lease->hardware_addr.htype, > > > > lease->hardware_addr.hlen, > > > > lease->hardware_addr.haddr)); > > > > > > > > fprintf(abc,"%s\n", > > > > > > print_hw_addr(lease->hardware_addr.htype, > > > > lease->hardware_addr.hlen, > > > > lease->hardware_addr.haddr)); > > > > > > > > > > > > if (errno) > > > > ++errors; > > > > } > > > > > > > > if (lease->uid_len) { > > > > int j; > > > > > > > > errno = 0; > > > > fprintf(db_file, "\n\tuid %2.2x", > > lease->uid[0]); > > > > if (errno) > > > > ++errors; > > > > > > > > for (j = 1; j < lease->uid_len; j++) { > > > > errno = 0; > > > > fprintf(db_file, ":%2.2x", > > lease->uid[j]); > > > > if (errno) > > > > ++errors; > > > > } > > > > putc(';', db_file); > > > > } > > > > > > > > if (lease->flags & BOOTP_LEASE) { > > > > errno = 0; > > > > fprintf(db_file, "\n\tdynamic-bootp;"); > > > > if (errno) > > > > ++errors; > > > > } > > > > > > > > if (lease->flags & ABANDONED_LEASE) { > > > > errno = 0; > > > > fprintf(db_file, "\n\tabandoned;"); > > > > if (errno) > > > > ++errors; > > > > } > > > > > > > > if (lease->client_hostname) { > > > === message truncated === > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > > It seems to me that you don't flush the file, nor you > close it. > This might be causing loss of data. Hi trucu, ya that is the main problem. Now finally i got it what i want. Thanks to all Rahul
That was my first guess but then I saw that you do flush the file:
/* * Commit any outstanding writes to the lease database file. We need to * do this even if we're rewriting the file below, just in case the * rewrite fails. */ if (fflush(db_file) == EOF) { note("commit_leases: unable to commit: %m"); return (0); } if (fsync(fileno(db_file)) == -1) { note("commit_leases: unable to commit: %m"); return (0); }
And then I looked harder and noticed the local variable. I haven't tested your code but are you sure it's not the local variable? You are really making more effort for yourself. A good hacker knows how to leverage the tools he has. Parsing is really not difficult with computer-generated text, and will save you headaches. Never make up a "new format" if you can avoid it, and especially not just "because I like it"! Also don't top post PLEASE, Rahul "the hacker". -Nick