Bruce Guenter’s cvm librairies use Linux style sockets. That is usually fine on OpenBSD, except that the cvm_udp code opens a socket, and then uses sendto() which implicitly reoppens the socket. OpenBSD doesn’t like that, so here is the patch to fix cvm-0.18:

--- client.c.org        Fri Feb 20 12:07:55 2004+++ client.c    Fri Feb 20 12:09:26 2004This patch allows cvm to run on BSD.  Under Linux,one can open a socket, and then use sendto whichtechnically reopens the socket.  Under BSD, it isn'tallowed to use sendto() with a socket that isalready open.@@ -269,9 +269,8 @@   if ((he = gethostbyname(hostname)) == 0) return 1;   memcpy(&ip, he->h_addr_list[0], 4);-  if ((sock = socket_udp()) == -1) return CVME_IO;-  if ( !socket_connect4(sock, &ip, port) ||-      !udp_sendrecv(sock, &ip, port)) {+  if ((sock = socket_udp()) == -1) return CVME_IO;+  if (!udp_sendrecv(sock, &ip, port)) {     close(sock);     return CVME_IO;   }