From owner-freebsd-net@FreeBSD.ORG Sun Aug 11 04:40:05 2013 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 52CE5778 for ; Sun, 11 Aug 2013 04:40:05 +0000 (UTC) (envelope-from saeedeh.motlagh@gmail.com) Received: from mail-lb0-x234.google.com (mail-lb0-x234.google.com [IPv6:2a00:1450:4010:c04::234]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9D09020FC for ; Sun, 11 Aug 2013 04:40:04 +0000 (UTC) Received: by mail-lb0-f180.google.com with SMTP id a16so4078255lbj.11 for ; Sat, 10 Aug 2013 21:40:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=JotVwjHDZtBm3ruLWP2IMzEUHKwgVo1SFTnSFXqUKMg=; b=GqYk9HLj8azLndoFZhsdqAIrf8QEq3cihs8leGDDipd7UN4csBYVgDzCWVinAmNNre KNF1D5eSWRfVgd0kjcM2v/wIOGvPEdK/prAy9gH+NOiQ21mgm8wDi7mJ3G0EExb5xM/n yffIx7iTIJiqaewObCHb+bBaE12Ra19PHJ3unH4VD4ubSso39dtGVDuN0BANQhp3NOx/ LqBd2QjCdbPpW87H+hyzDib9gAVDzDpDY+jg4J9zrP998hLOXRR410a6fYpm9KtrAtnL z2uYgmGB57LzsbhfcQb8fk6bE2W0C3YhlPBirC60tFZ5P3LD6S6cvKb2TAraZ1j8JNIG 4ELw== X-Received: by 10.112.34.6 with SMTP id v6mr2947894lbi.21.1376196002502; Sat, 10 Aug 2013 21:40:02 -0700 (PDT) MIME-Version: 1.0 Received: by 10.112.162.162 with HTTP; Sat, 10 Aug 2013 21:39:22 -0700 (PDT) In-Reply-To: References: <8B53C542-5CC3-45E6-AA62-B9F52A735EE5@my.gd> From: saeedeh motlagh Date: Sun, 11 Aug 2013 09:09:22 +0430 Message-ID: Subject: Re: how calculate the number of ip addresses in a range? To: Damien Fleuriot Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: Kimmo Paasiala , s m , Peter Wemm , FreeBSD Net X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 04:40:05 -0000 thank you all guys for your answers. Peter, of course it's not my homework!!!!!! in fact, i have a program which manages dhcp. i want to limit the number of ip address which can be assigned by dhcp server. in order to do that, i should know how many ip addresses are available in the range that is defined for server and if the number of available ip addresses are greater than valid threshold, it's error. so as you said, i should know the math for calculate this number. thank you again guys for your answers but they do not solve my problem. any body knows what is the formula to calculate the valid ip addresses for any desired ranges? Thanks On Sat, Aug 10, 2013 at 5:19 AM, Damien Fleuriot wrote: > > > On 10 Aug 2013, at 01:07, Kimmo Paasiala wrote: > > > On Sat, Aug 10, 2013 at 1:44 AM, Peter Wemm wrote: > >> On Fri, Aug 9, 2013 at 9:34 AM, Fleuriot Damien wrote: > >>> > >>> On Aug 8, 2013, at 10:27 AM, Peter Wemm wrote: > >>> > >>>> On Thu, Aug 8, 2013 at 12:04 AM, s m wrote: > >>>>> hello guys, > >>>>> > >>>>> i have a question about ip addresses. i know my question is not > related to > >>>>> freebsd but i googled a lot and found nothing useful and don't know > where i > >>>>> should ask my question. > >>>>> > >>>>> i want to know how can i calculate the number of ip addresses in a > range? > >>>>> for example if i have 192.0.0.1 192.100.255.254 with mask 8, how > many ip > >>>>> addresses are available in this range? is there any formula to > calculate > >>>>> the number of ip addresses for any range? > >>>>> > >>>>> i'm confusing about it. please help me to clear my mind. > >>>>> thanks in advance, > >>>> > >>>> My immediate reaction is.. is this a homework / classwork / > assignment? > >>>> > >>>> Anyway, you can think of it by converting your start and end addresses > >>>> to an integer. Over simplified: > >>>> > >>>> $ cat homework.c > >>>> main() > >>>> { > >>>> int start = (192 << 24) | (0 << 16) | (0 << 8) | 1; > >>>> int end = (192 << 24) | (100 << 16) | (255 << 8) | 254; > >>>> printf("start %d end %d range %d\n", start, end, (end - start) + 1); > >>>> } > >>>> $ ./homework > >>>> start -1073741823 end -1067122690 range 6619134 > >>>> > >>>> The +1 is correcting for base zero. 192.0.0.1 - 192.0.0.2 is two > >>>> usable addresses. > >>>> > >>>> I'm not sure what you want to do with the mask of 8. > >>>> > >>>> You can also do it with ntohl(inet_addr("address")) as well and a > >>>> multitude of other ways. > >>> > >>> > >>> Hold on a second, why would you correct the base zero ? > >>> It can be a valid IP address. > >> > >> There is one usable address in a range of 10.0.0.1 - 10.0.0.1. > >> Converting to an integer and subtracting would be zero. Hence +1. > >> > >> -- > > > > To elaborate on this, for every subnet regardless of the address/mask > > combination there are two unusable addresses: The first address aka > > the "network address" and the last address aka the "broadcast > > address". There may be usable address in between the two that end in > > one of more zeros but those addresses are still valid. Some operating > > systems got this horribly wrong and marked any address ending with a > > single zero as invalid, windows 2000 was one of them. > > > > -Kimmo > > > Kimmo, > > That is untrue regarding /31 netmasks where you theoretically have 2^1 -2 > addresses. > > With such a short netmask the only 2 addresses are usable. > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" > -- *Sa.M*