Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Accessiing routing information

Posted on 1998-07-21
7
Medium Priority
?
311 Views
Last Modified: 2010-04-21
I have to access the routing information in my program. The file route.h contains the hashed linked list structure as defined in most of the books. But on my Unixware 1.14 version, the structure doesn't contain the "rt_next" member which points to the next routing entry. If this is the case how can you know the exact structure in the system for the routing tables. Where do I get information for this(manuals, header files etc)
0
Comment
Question by:vividh
  • 4
  • 2
7 Comments
 
LVL 2

Expert Comment

by:JYoungman
ID: 2009121
You are almost certainly better off parsing the output of
"netstat -r".

0
 
LVL 2

Accepted Solution

by:
seedy earned 800 total points
ID: 2009122
> The file route.h contains the hashed linked list structure
Which structure are you referring to?  I am familiar with UnixWare 2.1.

On 2.1 you would use ioctl(SIOCGRTTAB)call on /dev/ip to retrieve the routing information.  The info will be retunred in an array of struct rtrecord.  SIOCGRTSIZ can be used to get the number of route entries.

Check on the sockio.h for the #defines for the above calls.  If they are present, they should work on 1.1x too.

BTW, you should be previllaged to read this info.
0
 
LVL 2

Expert Comment

by:seedy
ID: 2009123
Let me know if you need a code segment that shows how this is done.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:vividh
ID: 2009124
Seedy can you send me the code segment which will extract me the routing tables from the kernel.
0
 
LVL 2

Expert Comment

by:seedy
ID: 2009125
Here you go!

--- code segment start ---
int     fd, iRet;
struct  strioctl ioc;
struct  rtrecord *rtent;
int     iEntries;
int     ii;

if ((fd = open("/dev/ip", O_RDONLY)) < 0) {
        return(-1);
}

/* First find how many entries are in the routing table */
ioc.ic_cmd = SIOCGRTSIZ;
ioc.ic_timout = 0;
ioc.ic_len = 0;
ioc.ic_dp = (caddr_t) NULL ;
if ((iEntries = ioctl(fd, I_STR, (caddr_t) &ioc)) < 0) {
        return(-1);
}

/* Make space for as many entries */
rtent = (struct rtrecord *) malloc(sizeof(struct rtrecord) * iEntries);
if ( rtent == NULL ) {
        return(-1);  
}

/* Get the entries */
ioc.ic_cmd = SIOCGRTTAB;
ioc.ic_timout = 0;
ioc.ic_len = sizeof(struct rtrecord) * iEntries;
ioc.ic_dp = (caddr_t) rtent ;
if ((iRet = ioctl(fd, I_STR, (caddr_t) &ioc)) < 0) {
        return(-1);
}

/* Entries are in rtent ; loop over each entry and do what you want */
for ( ii = 0; ii < iEntries; ii++) {
        /*******   ADD YOUR CODE HERE *****/
        rtent++;
}

--- code segment end ---
0
 

Author Comment

by:vividh
ID: 2009126
The SIOCGRTSIZ defination is not available in Unixware 1.1.2/1.1.4. With 2.1 it is perfect but my limitation is that I am currently working on 1.1.2/1.1.4. If you have worked on these pls help me so.

0
 
LVL 2

Expert Comment

by:seedy
ID: 2009127
I am sorry, as I said already, I am familiar only with 2.1.  And I do not have a 1.x around here to look into.
0

Featured Post

[Webinar] Cloud Security

In this webinar you will learn:

-Why existing firewall and DMZ architectures are not suited for securing cloud applications
-How to make your enterprise “Cloud Ready”, and fix your aging DMZ architecture
-How to transform your enterprise and become a Cloud Enabler

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Regular patching is part of a system administrator's tasks. However, many patches require that the system be in single-user mode before they can be installed. A cluster patch in particular can take quite a while to apply if the machine…
Using libpcap/Jpcap to capture and send packets on Solaris version (10/11) Library used: 1.      Libpcap (http://www.tcpdump.org) Version 1.2 2.      Jpcap(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html) Version 0.6 Prerequisite: 1.      GCC …
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.
Suggested Courses
Course of the Month12 days, 2 hours left to enroll

916 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