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

Reply via email to