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; }