Date: Tue, 28 Aug 2001 18:07:13 -0700 From: "Anuranjan" <anu@nttmcl.com> To: <questions@freeBSD.ORG> Subject: very urgent : trying to add a route to kernel table Message-ID: <001901c13026$f0aaf230$f64545d8@ntt27f48otgmw8>
next in thread | raw e-mail | index | archive | help
Hi,
I'm trying to add an entry into the kernel routing table (my first time).
Don't know what I'm doing wrong ... but when I try "RTM_DELETE" it works ..
only RTM_ADD doesn't (errno says EINVAL) ... any suggestions ? Am attaching
the code snippet here..
--Anu
----------------------------------------------------------------------------
----------------------------------------------------------------------------
------------------------------
process_pkt_info(char *srcIPaddr, char *dstIPaddr, int src_if_id)
{
int err;
struct sockaddr_in *s;
int sockfd, rtsockfd;
char *buf;
pid_t pid;
ssize_t n;
struct rt_msghdr *rtm;
struct sockaddr *sa, rti_info[RTAX_MAX];
rtsockfd = socket(AF_ROUTE, SOCK_RAW, 0);
buf = (char *)calloc(1, BUFLEN);
if(buf < 0)
{
printf("calloc failed");
abort();
}
rtm = (struct rt_msghdr *)buf;
rtm->rtm_msglen = sizeof(struct rt_msghdr) + sizeof(struct sockaddr_in);
rtm->rtm_version = RTM_VERSION;
rtm->rtm_type = RTM_ADD;
rtm->rtm_addrs = RTA_DST;
rtm->rtm_pid = pid = getpid();
rtm->rtm_seq = SEQ;
s = (struct sockaddr_in *) (rtm + 1);
s->sin_len = sizeof(struct sockaddr_in);
s->sin_family = AF_INET;
s->sin_addr.s_addr = inet_addr(srcIPaddr);
fwd_enable(1);
if(write(rtsockfd, rtm, rtm->rtm_msglen) < 0 )
{
printf ("error: %d\n", errno);
}
}
int main (void)
{
process_pkt_info("4.5.6.7", NULL, 2);
return(0);
}
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001901c13026$f0aaf230$f64545d8>
