Re: GETHOSTBYNAME()

From: Prasad (prasad_s@students.iiit.net)
Date: Mon Mar 24 2003 - 00:51:42 EST


Hi,

Just have a look at the code at the bottom... that should make it clear.
This again is what i implemented for my project and its working fine.

> Thanks for the help. But if I am opening a socket in a lodable kernel module
> and need to send a message to a perticular IP say 158.168.1.1, then how to
> populate the structure sock_data.sin_addrs

        // We dont have a inet_addr in user space.
        unsigned int inet_addr(char *str)
        {
          int a,b,c,d;
          char arr[4];
          sscanf(str,"%d.%d.%d.%d",&a,&b,&c,&d);
          arr[0] = a; arr[1] = b; arr[2] = c; arr[3] = d;
          return *(unsigned int*)arr;
        }

        // Get the host...
        int gethost(struct sockaddr_in *addr)
        {
          unsigned long ad;
          addr->sin_family = AF_INET;
          addr->sin_port = htons(sysctl_dos_tcpport );
          ad = inet_addr("172.16.7.12");
          if( ad == INADDR_NONE ){
            printk("dos_select_host: Host not found");
            return -EHOSTUNREACH;
          }
          addr->sin_addr.s_addr = ad;
          return 0;
        }

        // Connect to the remote host...
        struct socket* connect(struct sockaddr_in* sock_addr)
        {
          int retval;
          struct socket *sock;
        
          retval = sock_create(AF_INET,SOCK_STREAM,0,&sock);
        
          if (retval < 0) {
            printk("(connect) could not create a socket\n");
            return NULL;
          }

          retval = sock->ops->connect(sock,
                        (struct sockaddr *)sock_addr,
                        sizeof(struct sockaddr_in),0);
        
          if (retval < 0) {
            printk("(connect) error on connect: %d\n",retval);
            sock_release(sock);
            return NULL;
          }
        
          return sock;
        }

Hope this serves your purpose...

Prasad.

-- 
Failure is not an option

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Mar 31 2003 - 22:00:14 EST