Solved

Accessiing routing information

Posted on 1998-07-21
7
274 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 200 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
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 

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

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

This tech tip describes how to install the Solaris Operating System from a tape backup that was created using the Solaris flash archive utility. I have used this procedure on the Solaris 8 and 9 OS, and it shoudl also work well on the Solaris 10 rel…
My previous tech tip, Installing the Solaris OS From the Flash Archive On a Tape (http://www.experts-exchange.com/articles/OS/Unix/Solaris/Installing-the-Solaris-OS-From-the-Flash-Archive-on-a-Tape.html), discussed installing the Solaris Operating S…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…

762 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

18 Experts available now in Live!

Get 1:1 Help Now