Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Aug 2013 21:20:40 +0200
From:      Damien Fleuriot <ml@my.gd>
To:        saeedeh motlagh <saeedeh.motlagh@gmail.com>
Cc:        Kimmo Paasiala <kpaasial@gmail.com>, s m <sam.gh1986@gmail.com>, Peter Wemm <peter@wemm.org>, FreeBSD Net <freebsd-net@freebsd.org>
Subject:   Re: how calculate the number of ip addresses in a range?
Message-ID:  <ECCA98F7-EE1E-4EC1-AB7B-2F9270CBA3EF@my.gd>
In-Reply-To: <CAN%2BS=WAZCx5mQ_AgO77UOyEhXKVHiDJ%2B=0vjTVW89OnbBBpDBA@mail.gmail.com>
References:  <CAA_1SgEEeyCOk%2Bi9Zp725RfQ9s0tpELXL0SSBeiN%2B60z%2BxqYUg@mail.gmail.com> <CAGE5yCoBYS2%2BsHoQXZvWMNPTQeEEtDX7LAKSBHJAZ4_rA2-byQ@mail.gmail.com> <8B53C542-5CC3-45E6-AA62-B9F52A735EE5@my.gd> <CAGE5yCqURzYF2TYez6S6y=x4rWtKdL%2B-3zjGsDuz2LqGb18-RQ@mail.gmail.com> <CA%2B7WWSf_i7b66xSFP3Gk20Cq7v0mX_ynQg61GM9u1_0vZF5-wQ@mail.gmail.com> <D07EECB0-2066-4187-8321-6D8F83089FD5@my.gd> <CAN%2BS=WAZCx5mQ_AgO77UOyEhXKVHiDJ%2B=0vjTVW89OnbBBpDBA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Yup.

Your available addresses are:
(2 ^ (32 - netmask) ) - 2

Example for a 29:
2^3 - 2

Example for a /28:
2^4 - 2



On 11 Aug 2013, at 06:39, saeedeh motlagh <saeedeh.motlagh@gmail.com> wrote:=


> thank you all guys for your answers.
> Peter, of course it's not my homework!!!!!! in fact, i have a program whic=
h manages dhcp. i want to limit the number of ip address which can be assign=
ed by dhcp server. in order to do that, i should know how many ip addresses a=
re available in the range that is defined for server and if the number of av=
ailable ip addresses are greater than valid threshold, it's error. so as you=
 said, i should know the math for calculate this number.
>=20
> thank you again guys for your answers but they do not solve my problem. an=
y body knows what is the formula to calculate the valid ip addresses for any=
 desired ranges?
> Thanks=20
>=20
>=20
> On Sat, Aug 10, 2013 at 5:19 AM, Damien Fleuriot <ml@my.gd> wrote:
>>=20
>>=20
>> On 10 Aug 2013, at 01:07, Kimmo Paasiala <kpaasial@gmail.com> wrote:
>>=20
>> > On Sat, Aug 10, 2013 at 1:44 AM, Peter Wemm <peter@wemm.org> wrote:
>> >> On Fri, Aug 9, 2013 at 9:34 AM, Fleuriot Damien <ml@my.gd> wrote:
>> >>>
>> >>> On Aug 8, 2013, at 10:27 AM, Peter Wemm <peter@wemm.org> wrote:
>> >>>
>> >>>> On Thu, Aug 8, 2013 at 12:04 AM, s m <sam.gh1986@gmail.com> wrote:
>> >>>>> hello guys,
>> >>>>>
>> >>>>> i have a question about ip addresses. i know my question is not rel=
ated 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 r=
ange?
>> >>>>> for example if i have 192.0.0.1 192.100.255.254 with mask 8, how ma=
ny ip
>> >>>>> addresses are available in this range? is there any formula to calc=
ulate
>> >>>>> 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 / assignme=
nt?
>> >>>>
>> >>>> Anyway, you can think of it by converting your start and end address=
es
>> >>>> to an integer.  Over simplified:
>> >>>>
>> >>>> $ cat homework.c
>> >>>> main()
>> >>>> {
>> >>>> int start =3D  (192 << 24) | (0 << 16) | (0 << 8) | 1;
>> >>>> int end =3D  (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
>>=20
>>=20
>> Kimmo,
>>=20
>> That is untrue regarding /31 netmasks where you theoretically have 2^1 -2=
 addresses.
>>=20
>> 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"
>=20
>=20
>=20
> --=20
> Sa.M



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ECCA98F7-EE1E-4EC1-AB7B-2F9270CBA3EF>