Hi Stephen,

 

As suggested by you, I tried following things for IPv4 only but still facing
the issue.

 

1)      char address[INET_ADDRSTRLEN+1] = "10.65.156.197";

2)      int socket_desc = socket (AF_INET, SOCK_STREAM, 0);

  if (socket_desc == INVALID_SOCKET)

  {

      cout << "The error retuned by socket is" << errno << endl;

                  }

     cout << "The socket is created successfully" << endl;

3)      struct sockaddr_in addrinfo;

 addrinfo.sin_family = AF_INET;

 addrinfo.sin_port = htons(80);

 inet_pton(AF_INET, address, &(addrinfo.sin_addr.s_addr));

 int retval = connect(socket_desc, (struct sockaddr *)&addrinfo, sizeof
(addrinfo));

 if (retval != 0)

                 {

     cout << " The error returned by socket connect is" << errno << endl;

 }

   cout << "The socket is connected successfully" << endl;

4)      BIO * conn;

  conn = BIO_new_socket(socket_desc,0);

  if(!conn)

                  {

      cout << " The Bio_new_socket failed" << endl;

  }

5)      BIO_set_nbio(conn, 1);

6)      int retVal = BIO_do_connect(conn);

  if(retVal <= 0)

  {

      cout << " The Bio_do_connect failed" << endl;

  }

 

After executing the program, I am getting output as :

The socket is created successfully

The socket is connected successfully

Bio_do_connect failed

 

 Now I am not sure what I am missing here due to which it is getting failed
for IPv4 itself. Please suggest. Though I wanted to have API's support for
both IPv4 and IPv6 but situation seems to be complex here. I am not able to
execute SSL API's successfully for both IPv4 and IPv6. I am facing same
error in both the cases.

 

I would request to please have a look and suggest something.

 

Thanks

Akanksha Shukla.

 

-----Original Message-----
From: owner-openssl-us...@openssl.org
[mailto:owner-openssl-us...@openssl.org] On Behalf Of Dr. Stephen Henson
Sent: Thursday, September 29, 2011 11:09 PM
To: openssl-users@openssl.org
Subject: Re: Open SSL API's Support For IPv6.

 

On Thu, Sep 29, 2011, Akanksha Shukla wrote:

 

> Hi All,

> 

> I tried following things:

> 

>  

> 

> 1)      Made socket() system call with AF_INET6 family type.

> 

> 2)      Made connect() system call to get connected to destination address

> using the socket created above.

> 

> 3)      Then made call to Bio_new_socket() and passed the connected socket

> descriptor.

> 

> 4)      Thereafter made call to Bio_set_nbio() and Bio_do_connect() on the

> socket BIO, and this time I got error from the Bio_do_connect() call. 

> 

>  

> 

> Though  I have added diags if Bio_new_socket() call gets failed. But those

> diags were not getting hit. So, I am assuming that step 1 to step 3 are

> working fine. Problem is coming at the time of Bio_do_connect(). 

> 

>  

> 

> Now the next questions which come in my mind are:

> 

>  

> 

> 1)      Bio_set_nbio() and Bio_do_connect() API's are IPv6 compatible?

> 

> 2)      If yes, then what am I missing here because of which I am getting

> error from Bio_do_connect() API?

> 

> 3)      If no, then how can I proceed further because I need to use API

> which are both (IPv6 as well as IPv4) compatible.

> 

 

What error are you getting? Have you tried exactly the same steps with an
IPv4

socket to see if it is a problem with you code and/or not specific to IPv6?

 

Steve.

--

Dr Stephen N. Henson. OpenSSL project core developer.

Commercial tech support now available see: http://www.openssl.org

______________________________________________________________________

OpenSSL Project                                 http://www.openssl.org

User Support Mailing List                    openssl-users@openssl.org

Automated List Manager                           majord...@openssl.org

Reply via email to