Solved

subnet calculator

Posted on 1998-12-04
11
629 Views
Last Modified: 2012-05-04
I am trying to write a function that accepts two strings,
an ip address and a netmask, and returns another string,
which is the subnet calculated from the two input parameters.

first i convert the two strings to ip addresses
using inet_addr(ip) and inet_addr(subnet)

then i use the & operation to get the netmask in
an unsigned int format, but I don't know how to
convert that back to a string.

Is it possible to do that conversion, or am I completely
off topic here ???

Does anybody know of any code that does this successfully ?

Thanx,
      corneliu
0
Comment
Question by:coko
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 5

Expert Comment

by:scrapdog
Comment Utility
So what you need to know then is how to convert an unsigned int into a string?
0
 
LVL 5

Expert Comment

by:scrapdog
Comment Utility
#include <stdlib.h>
#include <stdio.h>
#include <string.h>


unsigned long int x=123456;
char *y,c;
char string[16], s[3];
int i,n;

void main()
{
  y = (char *)&x;
  for(i=3;i>=0;i--) {
       c=*(y+i);
       n=(int)c;
       if (n<0) {n=n+256;}
       itoa(n,s,10);
       strcat(string,s);
       if(i>0) strcat(string,"."); }
  printf("%s\n",string);
}
0
 

Author Comment

by:coko
Comment Utility
no, i need to know how to convert a subnet address
like 47.245.34 from unsigned it (which is represented
something like 3462356326) to the actual address in
a str
0
 
LVL 5

Expert Comment

by:scrapdog
Comment Utility
I know...that is what my program does (attempts to do).
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
Your progrem depends on the 'endian'ness of the integer representation.
(although, if you converted from a string the same way in the first place, and don't really care about the int value, then it may not matter)
atoi is not part of ANSI C, if your library doesn't have it, you can use sprintf instead
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 5

Expert Comment

by:scrapdog
Comment Utility
My code snippet assumes little endianness by the way...
0
 
LVL 6

Expert Comment

by:snoegler
Comment Utility
BTW: atoi _is_ part of ANSI C.
0
 
LVL 6

Expert Comment

by:snoegler
Comment Utility
Sorry, i think you must have meant itoa - so my comment is pretty
unnecessary :)
0
 
LVL 6

Expert Comment

by:snoegler
Comment Utility
BTW again: inet_ntoa converts an 'in_addr' back to a dotted
string - i think this is what you need, coko?
0
 
LVL 84

Expert Comment

by:ozo
Comment Utility
You're right snoegler, atoi is part of ANSI C, I ment to say that itoa is not :)
nor is inet_ntoa part of ANSI C, but it is likely to be found in the same places as inet_addr
does
printf("%s\n",inet_ntoa(inet_makeaddr(inet_network("47.245.34.0")>>8,inet_addr("47.245.34.0"))));
do the job?
0
 
LVL 3

Accepted Solution

by:
mliberi earned 40 total points
Comment Utility
char *Int2ipaddress(char *buffer, int x)
/* convert integer x to ip address */
/* fills buffer and return it      */
{ sprintf(buffer,"%d.%d.%d.%d",(x>>24)&0xff
                              ,(x>>16)&0xff
                              ,(x>> 8)&0xff
                              , x     &0xff
         );
  return buffer;
}
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now