Hi David, You are right, I can't seem to get any further; always ended up with failing. bash-3.00# ping myaccess.oraclevpn.com myaccess.oraclevpn.com is alive bash-3.00# openconnect --script /etc/vpnc/vpnc-script https://myaccess.oraclevpn.com Attempting to connect to 198.17.70.10:443 Failed to connect to host myaccess.oraclevpn.com Failed to open HTTPS connection to myaccess.oraclevpn.com Failed to obtain WebVPN cookie By the way, the command I used to connect to our server, bash-3.00# openconnect --certificate /opt/myCertCA.crt --script /etc/vpnc/vpnc-script myvpnaddress.com:443 Am I doing anything wrong? It ended up with the same three "Failed to.." errors as above. I have tried to connect to our ssl vpn server but unable to, openconnect --certificate "/opt/ncscartsg01_NCS Pte Ltd Root CA.crt" --script /etc/vpnc/vpnc-script https://sam.ncs.com.sg Attempting to connect to 203.126.130.178:443 Failed to connect to host sam.ncs.com.sg Failed to open HTTPS connection to sam.ncs.com.sg Failed to obtain WebVPN cookie On Thu, Apr 19, 2012 at 2:45 PM, David Woodhouse <dwmw2 at infradead.org> wrote: > On Thu, 2012-04-19 at 11:43 +0800, chua wei yang wrote: >> I think all is good now, my original problem has been resolved. > > I think you'll still need something like this, to make things actually > work on Solaris 10. I'm hoping the experts will provide a proper fix and > a coherent explanation. > > diff --git a/tun.c b/tun.c > index b3a7fb2..7d47be9 100644 > --- a/tun.c > +++ b/tun.c > @@ -360,10 +360,13 @@ int script_config_tun(struct openconnect_info *vpninfo, const char *reason) > ?} > > ?#ifdef __sun__ > +#include <sys/utsname.h> > + > ?static int link_proto(int unit_nr, const char *devname, uint64_t flags) > ?{ > ? ? ? ?int ip_fd, mux_id, tun2_fd; > ? ? ? ?struct lifreq ifr; > + ? ? ? struct utsname un; > > ? ? ? ?tun2_fd = open("/dev/tun", O_RDWR); > ? ? ? ?if (tun2_fd < 0) { > @@ -393,7 +396,11 @@ static int link_proto(int unit_nr, const char *devname, uint64_t flags) > ? ? ? ? ? ? ? ?close(tun2_fd); > ? ? ? ? ? ? ? ?return -1; > ? ? ? ?} > - ? ? ? if (ioctl(ip_fd, I_PUSH, "arp") < 0) { > + > + ? ? ? /* This doesn't work on Solaris 10. And presumably before */ > + ? ? ? uname (&un); > + ? ? ? if (atof(un.release) >= 5.11 && > + ? ? ? ? ? ioctl(ip_fd, I_PUSH, "arp") < 0) { > ? ? ? ? ? ? ? ?perror(_("Can't push ARP")); > ? ? ? ? ? ? ? ?close(tun2_fd); > ? ? ? ? ? ? ? ?close(ip_fd); > >> > -- > dwmw2