sync with OpenBSD -current

This commit is contained in:
purplerain 2024-08-27 19:23:27 +00:00
parent 84a7643638
commit bf0d2e284c
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
48 changed files with 439 additions and 307 deletions

View File

@ -1,4 +1,4 @@
/* $OpenBSD: history.c,v 1.84 2019/10/27 15:02:19 jca Exp $ */
/* $OpenBSD: history.c,v 1.86 2024/08/27 19:27:19 op Exp $ */
/*
* command history
@ -507,20 +507,19 @@ findhist(int start, int fwd, const char *str, int anchored)
int
findhistrel(const char *str)
{
const char *errstr;
int maxhist = histptr - history;
int start = maxhist - 1;
int rec = atoi(str);
int rec;
rec = strtonum(str, -maxhist, maxhist, &errstr);
if (errstr)
return -1;
if (rec == 0)
return -1;
if (rec > 0) {
if (rec > maxhist)
return -1;
if (rec > 0)
return rec - 1;
}
if (rec > maxhist)
return -1;
return start + rec + 1;
return maxhist + rec;
}
void

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: caesar.6,v 1.9 2015/01/15 19:06:31 schwarze Exp $
.\" $OpenBSD: caesar.6,v 1.10 2024/08/26 20:12:33 jmc Exp $
.\"
.\" Copyright (c) 1989, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@ -29,7 +29,7 @@
.\"
.\" @(#)caesar.6 8.2 (Berkeley) 11/16/93
.\"
.Dd $Mdocdate: January 15 2015 $
.Dd $Mdocdate: August 26 2024 $
.Dt CAESAR 6
.Os
.Sh NAME
@ -56,11 +56,9 @@ If this utility is invoked as
.Nm rot13 ,
it will rotate by 13 characters.
This format is commonly used on USENET
and in some of the databases used by the
.Xr fortune 6
program to
to
.Dq disguise
their content.
content.
.Pp
The frequency (from most common to least) of English letters is as follows:
.Bd -filled -offset indent

View File

@ -1,4 +1,4 @@
# $OpenBSD: Notes,v 1.5 2018/09/15 09:44:19 bentley Exp $
# $OpenBSD: Notes,v 1.6 2024/08/26 20:10:53 jmc Exp $
# $NetBSD: Notes,v 1.2 1995/03/23 08:28:26 cgd Exp $
# @(#)Notes 8.1 (Berkeley) 5/31/93
@ -25,18 +25,18 @@ database, and "fort.dat" is the data file which describes it. See
strfile(8) for more information on creating the data files.
Fortunes are split into potentially offensive and not potentially
offensive parts. The offensive version of a file has the same name as the
non-offensive version with "-o" concatenated, i.e. "fort" is the standard
fortune database, and "fort-o" is the standard offensive database. The
non-offensive version with "-o" concatenated, i.e. "fortune" is the standard
fortune database, and "fortune-o" is the standard offensive database. The
fortune program automatically assumes that any file with a name ending in
"-o" is potentially offensive, and should therefore only be displayed if
explicitly requested, either with the -o option or by specifying a file name
on the command line.
Potentially offensive fortune files should NEVER be maintained in
clear text on the system. They are rotated (see caesar(6)) 13 positions.
To create a new, potentially offensive database, use caesar to rotate it,
and then create its data file with the -x option to strfile(8). The fortune
program automatically decrypts the text when it prints entries from such
databases.
Potentially offensive fortune files are maintained in
clear text on the system. If this is a concern, they can be rotated
13 positions: to create a new, rotated database, use a utility such
as rot13(6) or tr(1) to rotate it, and then create its data file
with the -x option to strfile(8). The fortune program automatically
decrypts the text when it prints entries from such databases.
Anything which would not make it onto network prime time programming
(or which would only be broadcast if some discredited kind of guy said it)
MUST be in the potentially offensive database. Fortunes containing any

View File

@ -1,12 +1,7 @@
# $OpenBSD: README,v 1.3 2002/04/02 02:06:25 pjanzen Exp $
# $OpenBSD: README,v 1.4 2024/08/26 20:10:53 jmc Exp $
# $NetBSD: README,v 1.2 1995/03/23 08:28:29 cgd Exp $
# @(#)README 8.1 (Berkeley) 5/31/93
The potentially offensive fortunes ARE installed by default. To avoid
installing them, whack the Makefile in the subdirectory datfiles, and
do "make all install".
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Some years ago, my neighbor Avery said to me: "There has not been an
adequate jokebook published since "Joe_Miller", which came out in 1739 and
which, incidentally, was the most miserable no-good ... jokebook in the

View File

@ -1,14 +1,10 @@
# $OpenBSD: Makefile,v 1.8 2024/08/23 03:25:32 deraadt Exp $
# $OpenBSD: Makefile,v 1.9 2024/08/26 20:10:53 jmc Exp $
# $NetBSD: Makefile,v 1.15 1996/02/29 00:21:16 jtc Exp $
# @(#)Makefile 8.2 (Berkeley) 4/19/94
SRCS= fortunes fortunes2 startrek zippy recipes
BLDS= fortunes.dat fortunes2.dat startrek.dat zippy.dat \
fortunes-o fortunes-o.dat recipes.dat
SRCS+= fortunes2-o limerick
BLDS+= fortunes2-o.dat limerick.dat
TYPE= real
SRCS= fortunes fortunes-o fortunes2 fortunes2-o limerick recipes startrek zippy
BLDS= fortunes.dat fortunes-o.dat fortunes2.dat fortunes2-o.dat \
limerick.dat recipes.dat startrek.dat zippy.dat
CLEANFILES+=${BLDS}
@ -24,13 +20,7 @@ install: ${SRCS} ${BLDS}
${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 ${BLDS} \
${DESTDIR}/usr/share/games/fortune
fortunes.dat fortunes2.dat fortunes2-o.dat limerick.dat startrek.dat zippy.dat recipes.dat:
fortunes.dat fortunes-o.dat fortunes2.dat fortunes2-o.dat limerick.dat recipes.dat startrek.dat zippy.dat:
${STRFILE} -s ${.CURDIR}/${.TARGET:R} ${.TARGET}
fortunes-o.dat: fortunes-o
${STRFILE} -sx fortunes-o ${.TARGET}
fortunes-o: fortunes-o.${TYPE}
tr [a-zA-Z] [n-za-mN-ZA-M] < ${.ALLSRC} > ${.TARGET}
.include <bsd.prog.mk>

View File

@ -1,4 +1,4 @@
/* $OpenBSD: cms_att.c,v 1.12 2024/07/26 13:23:52 tb Exp $ */
/* $OpenBSD: cms_att.c,v 1.13 2024/08/27 01:19:27 tb Exp $ */
/*
* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project.
@ -52,12 +52,12 @@
* ====================================================================
*/
#include <openssl/asn1t.h>
#include <openssl/pem.h>
#include <openssl/x509v3.h>
#include <openssl/err.h>
#include <openssl/asn1.h>
#include <openssl/cms.h>
#include <openssl/x509.h>
#include "cms_local.h"
#include "x509_local.h"
/* CMS SignedData Attribute utilities */

View File

@ -1,4 +1,4 @@
/* $OpenBSD: dh_pmeth.c,v 1.16 2024/01/01 16:01:48 tb Exp $ */
/* $OpenBSD: dh_pmeth.c,v 1.17 2024/08/26 22:00:47 op Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2006.
*/
@ -58,6 +58,7 @@
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/asn1t.h>
@ -153,36 +154,21 @@ pkey_dh_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
static int
pkey_dh_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
{
long lval;
char *ep;
const char *errstr;
int len;
if (!strcmp(type, "dh_paramgen_prime_len")) {
errno = 0;
lval = strtol(value, &ep, 10);
if (value[0] == '\0' || *ep != '\0')
goto not_a_number;
if ((errno == ERANGE &&
(lval == LONG_MAX || lval == LONG_MIN)) ||
(lval > INT_MAX || lval < INT_MIN))
goto out_of_range;
len = lval;
len = strtonum(value, INT_MIN, INT_MAX, &errstr);
if (errstr != NULL)
return -2;
return EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len);
} else if (!strcmp(type, "dh_paramgen_generator")) {
errno = 0;
lval = strtol(value, &ep, 10);
if (value[0] == '\0' || *ep != '\0')
goto not_a_number;
if ((errno == ERANGE &&
(lval == LONG_MAX || lval == LONG_MIN)) ||
(lval > INT_MAX || lval < INT_MIN))
goto out_of_range;
len = lval;
len = strtonum(value, INT_MIN, INT_MAX, &errstr);
if (errstr != NULL)
return -2;
return EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, len);
}
not_a_number:
out_of_range:
return -2;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: dsa_pmeth.c,v 1.19 2023/12/28 22:11:26 tb Exp $ */
/* $OpenBSD: dsa_pmeth.c,v 1.20 2024/08/26 22:00:47 op Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2006.
*/
@ -58,6 +58,7 @@
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/asn1t.h>
@ -244,34 +245,21 @@ pkey_dsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
static int
pkey_dsa_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
{
long lval;
char *ep;
const char *errstr;
if (!strcmp(type, "dsa_paramgen_bits")) {
int nbits;
errno = 0;
lval = strtol(value, &ep, 10);
if (value[0] == '\0' || *ep != '\0')
goto not_a_number;
if ((errno == ERANGE &&
(lval == LONG_MAX || lval == LONG_MIN)) ||
(lval > INT_MAX || lval < INT_MIN))
goto out_of_range;
nbits = lval;
nbits = strtonum(value, INT_MIN, INT_MAX, &errstr);
if (errstr != NULL)
return -2;
return EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits);
} else if (!strcmp(type, "dsa_paramgen_q_bits")) {
int qbits;
errno = 0;
lval = strtol(value, &ep, 10);
if (value[0] == '\0' || *ep != '\0')
goto not_a_number;
if ((errno == ERANGE &&
(lval == LONG_MAX || lval == LONG_MIN)) ||
(lval > INT_MAX || lval < INT_MIN))
goto out_of_range;
qbits = lval;
qbits = strtonum(value, INT_MIN, INT_MAX, &errstr);
if (errstr != NULL)
return -2;
return EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA,
EVP_PKEY_OP_PARAMGEN, EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS,
qbits, NULL);
@ -280,8 +268,7 @@ pkey_dsa_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
EVP_PKEY_OP_PARAMGEN, EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0,
(void *)EVP_get_digestbyname(value));
}
not_a_number:
out_of_range:
return -2;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ec_pmeth.c,v 1.21 2023/12/28 22:12:37 tb Exp $ */
/* $OpenBSD: ec_pmeth.c,v 1.22 2024/08/26 22:01:28 op Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2006.
*/
@ -57,6 +57,7 @@
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/asn1t.h>
@ -445,10 +446,15 @@ pkey_ec_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
}
return EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md);
} else if (strcmp(type, "ecdh_cofactor_mode") == 0) {
int co_mode;
co_mode = atoi(value);
return EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, co_mode);
int cofactor_mode;
const char *errstr;
cofactor_mode = strtonum(value, -1, 1, &errstr);
if (errstr != NULL)
return -2;
return EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, cofactor_mode);
}
return -2;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: rsa_pmeth.c,v 1.40 2023/12/28 21:59:07 tb Exp $ */
/* $OpenBSD: rsa_pmeth.c,v 1.41 2024/08/26 22:01:28 op Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2006.
*/
@ -58,6 +58,7 @@
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/opensslconf.h>
@ -630,6 +631,8 @@ pkey_rsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
static int
pkey_rsa_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
{
const char *errstr;
if (!value) {
RSAerror(RSA_R_VALUE_MISSING);
return 0;
@ -664,13 +667,24 @@ pkey_rsa_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
saltlen = RSA_PSS_SALTLEN_MAX;
else if (!strcmp(value, "auto"))
saltlen = RSA_PSS_SALTLEN_AUTO;
else
saltlen = atoi(value);
else {
saltlen = strtonum(value, 0, INT_MAX, &errstr);
if (errstr != NULL) {
RSAerror(RSA_R_INVALID_PSS_SALTLEN);
return -2;
}
}
return EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, saltlen);
}
if (strcmp(type, "rsa_keygen_bits") == 0) {
int nbits = atoi(value);
int nbits;
nbits = strtonum(value, 0, INT_MAX, &errstr);
if (errstr != NULL) {
RSAerror(RSA_R_INVALID_KEYBITS);
return -2;
}
return EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, nbits);
}
@ -702,7 +716,13 @@ pkey_rsa_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
EVP_PKEY_CTRL_MD, value);
if (strcmp(type, "rsa_pss_keygen_saltlen") == 0) {
int saltlen = atoi(value);
int saltlen;
saltlen = strtonum(value, 0, INT_MAX, &errstr);
if (errstr != NULL) {
RSAerror(RSA_R_INVALID_PSS_SALTLEN);
return -2;
}
return EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, saltlen);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ts_conf.c,v 1.14 2024/03/26 00:39:22 beck Exp $ */
/* $OpenBSD: ts_conf.c,v 1.15 2024/08/26 22:01:28 op Exp $ */
/* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL
* project 2002.
*/
@ -56,6 +56,8 @@
*
*/
#include <limits.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/opensslconf.h>
@ -394,6 +396,7 @@ TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx)
int secs = 0, millis = 0, micros = 0;
STACK_OF(CONF_VALUE) *list = NULL;
char *accuracy = NCONF_get_string(conf, section, ENV_ACCURACY);
const char *errstr;
if (accuracy && !(list = X509V3_parse_list(accuracy))) {
TS_CONF_invalid(section, ENV_ACCURACY);
@ -402,14 +405,33 @@ TS_CONF_set_accuracy(CONF *conf, const char *section, TS_RESP_CTX *ctx)
for (i = 0; i < sk_CONF_VALUE_num(list); ++i) {
CONF_VALUE *val = sk_CONF_VALUE_value(list, i);
if (strcmp(val->name, ENV_VALUE_SECS) == 0) {
if (val->value)
secs = atoi(val->value);
if (val->value) {
secs = strtonum(val->value, 0, INT_MAX,
&errstr);
if (errstr != NULL) {
TS_CONF_invalid(section,
ENV_VALUE_SECS);
goto err;
}
}
} else if (strcmp(val->name, ENV_VALUE_MILLISECS) == 0) {
if (val->value)
millis = atoi(val->value);
if (val->value) {
millis = strtonum(val->value, 1, 999, &errstr);
if (errstr != NULL) {
TS_CONF_invalid(section,
ENV_VALUE_MILLISECS);
goto err;
}
}
} else if (strcmp(val->name, ENV_VALUE_MICROSECS) == 0) {
if (val->value)
micros = atoi(val->value);
if (val->value) {
micros = strtonum(val->value, 1, 999, &errstr);
if (errstr != NULL) {
TS_CONF_invalid(section,
ENV_VALUE_MICROSECS);
goto err;
}
}
} else {
TS_CONF_invalid(section, ENV_ACCURACY);
goto err;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: dhcpleased.c,v 1.31 2024/08/25 09:53:53 florian Exp $ */
/* $OpenBSD: dhcpleased.c,v 1.32 2024/08/27 05:55:39 florian Exp $ */
/*
* Copyright (c) 2017, 2021 Florian Obser <florian@openbsd.org>
@ -733,14 +733,18 @@ main_imsg_send_config(struct dhcpleased_conf *xconf)
sizeof(*iface_conf));
main_imsg_compose_engine(IMSG_RECONF_IFACE, -1, iface_conf,
sizeof(*iface_conf));
main_imsg_compose_frontend(IMSG_RECONF_VC_ID, -1,
iface_conf->vc_id, iface_conf->vc_id_len);
main_imsg_compose_engine(IMSG_RECONF_VC_ID, -1,
iface_conf->vc_id, iface_conf->vc_id_len);
main_imsg_compose_frontend(IMSG_RECONF_C_ID, -1,
iface_conf->c_id, iface_conf->c_id_len);
main_imsg_compose_engine(IMSG_RECONF_C_ID, -1,
iface_conf->c_id, iface_conf->c_id_len);
if (iface_conf->vc_id_len) {
main_imsg_compose_frontend(IMSG_RECONF_VC_ID, -1,
iface_conf->vc_id, iface_conf->vc_id_len);
main_imsg_compose_engine(IMSG_RECONF_VC_ID, -1,
iface_conf->vc_id, iface_conf->vc_id_len);
}
if (iface_conf->c_id_len) {
main_imsg_compose_frontend(IMSG_RECONF_C_ID, -1,
iface_conf->c_id, iface_conf->c_id_len);
main_imsg_compose_engine(IMSG_RECONF_C_ID, -1,
iface_conf->c_id, iface_conf->c_id_len);
}
if (iface_conf->h_name != NULL)
main_imsg_compose_frontend(IMSG_RECONF_H_NAME, -1,
iface_conf->h_name, strlen(iface_conf->h_name) + 1);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: identcpu.c,v 1.146 2024/07/08 14:46:47 mpi Exp $ */
/* $OpenBSD: identcpu.c,v 1.147 2024/08/27 09:16:03 bluhm Exp $ */
/* $NetBSD: identcpu.c,v 1.1 2003/04/26 18:39:28 fvdl Exp $ */
/*
@ -66,7 +66,7 @@ char cpu_model[48];
int cpuspeed;
int amd64_has_xcrypt;
int amd64_pos_cbit;
int amd64_pos_cbit; /* C bit position for SEV */
int has_rdrand;
int has_rdseed;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vmm_machdep.c,v 1.32 2024/08/22 04:53:07 mlarkin Exp $ */
/* $OpenBSD: vmm_machdep.c,v 1.33 2024/08/27 09:16:03 bluhm Exp $ */
/*
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
*
@ -82,9 +82,9 @@ int vcpu_reset_regs(struct vcpu *, struct vcpu_reg_state *);
int vcpu_reset_regs_vmx(struct vcpu *, struct vcpu_reg_state *);
int vcpu_reset_regs_svm(struct vcpu *, struct vcpu_reg_state *);
int vcpu_reload_vmcs_vmx(struct vcpu *);
int vcpu_init(struct vcpu *);
int vcpu_init(struct vcpu *, struct vm_create_params *);
int vcpu_init_vmx(struct vcpu *);
int vcpu_init_svm(struct vcpu *);
int vcpu_init_svm(struct vcpu *, struct vm_create_params *);
int vcpu_run_vmx(struct vcpu *, struct vm_run_params *);
int vcpu_run_svm(struct vcpu *, struct vm_run_params *);
void vcpu_deinit(struct vcpu *);
@ -1890,7 +1890,6 @@ vcpu_reset_regs_svm(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
{
struct vmcb *vmcb;
int ret;
uint16_t asid;
vmcb = (struct vmcb *)vcpu->vc_control_va;
@ -1963,14 +1962,7 @@ vcpu_reset_regs_svm(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
svm_setmsrbr(vcpu, MSR_PSTATEDEF(0));
/* Guest VCPU ASID */
if (vmm_alloc_vpid(&asid)) {
DPRINTF("%s: could not allocate asid\n", __func__);
ret = EINVAL;
goto exit;
}
vmcb->v_asid = asid;
vcpu->vc_vpid = asid;
vmcb->v_asid = vcpu->vc_vpid;
/* TLB Control - First time in, flush all*/
vmcb->v_tlb_control = SVM_TLB_CONTROL_FLUSH_ALL;
@ -1985,9 +1977,13 @@ vcpu_reset_regs_svm(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
PATENTRY(6, PAT_UCMINUS) | PATENTRY(7, PAT_UC);
/* NPT */
vmcb->v_np_enable = 1;
vmcb->v_np_enable = SVM_ENABLE_NP;
vmcb->v_n_cr3 = vcpu->vc_parent->vm_map->pmap->pm_pdirpa;
/* SEV */
if (vcpu->vc_sev)
vmcb->v_np_enable |= SVM_ENABLE_SEV;
/* Enable SVME in EFER (must always be set) */
vmcb->v_efer |= EFER_SVME;
@ -1998,7 +1994,6 @@ vcpu_reset_regs_svm(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
vcpu->vc_parent->vm_map->pmap->eptp = 0;
exit:
return ret;
}
@ -3086,6 +3081,7 @@ vcpu_reset_regs(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
*
* Parameters:
* vcpu: the VCPU structure being initialized
* vcp: parameters provided by vmd(8)
*
* Return values:
* 0: the VCPU was initialized successfully
@ -3093,8 +3089,9 @@ vcpu_reset_regs(struct vcpu *vcpu, struct vcpu_reg_state *vrs)
* EINVAL: an error occurred during VCPU initialization
*/
int
vcpu_init_svm(struct vcpu *vcpu)
vcpu_init_svm(struct vcpu *vcpu, struct vm_create_params *vcp)
{
uint16_t asid;
int ret = 0;
/* Allocate VMCB VA */
@ -3176,6 +3173,21 @@ vcpu_init_svm(struct vcpu *vcpu)
(uint64_t)vcpu->vc_svm_ioio_va,
(uint64_t)vcpu->vc_svm_ioio_pa);
/* Guest VCPU ASID */
if (vmm_alloc_vpid(&asid)) {
DPRINTF("%s: could not allocate asid\n", __func__);
ret = EINVAL;
goto exit;
}
vcpu->vc_vpid = asid;
/* Shall we enable SEV? */
vcpu->vc_sev = vcp->vcp_sev;
/* Inform vmd(8) about ASID and C bit position. */
vcp->vcp_poscbit = amd64_pos_cbit;
vcp->vcp_asid[vcpu->vc_id] = vcpu->vc_vpid;
exit:
if (ret)
vcpu_deinit_svm(vcpu);
@ -3189,7 +3201,7 @@ exit:
* Calls the architecture-specific VCPU init routine
*/
int
vcpu_init(struct vcpu *vcpu)
vcpu_init(struct vcpu *vcpu, struct vm_create_params *vcp)
{
int ret = 0;
@ -3207,7 +3219,7 @@ vcpu_init(struct vcpu *vcpu)
if (vmm_softc->mode == VMM_MODE_EPT)
ret = vcpu_init_vmx(vcpu);
else if (vmm_softc->mode == VMM_MODE_RVI)
ret = vcpu_init_svm(vcpu);
ret = vcpu_init_svm(vcpu, vcp);
else
panic("%s: unknown vmm mode: %d", __func__, vmm_softc->mode);
@ -6285,7 +6297,7 @@ vmm_handle_cpuid(struct vcpu *vcpu)
*rdx = 0;
break;
case 0x80000000: /* Extended function level */
*rax = 0x80000008; /* curcpu()->ci_pnfeatset */
*rax = 0x8000001f; /* curcpu()->ci_pnfeatset */
*rbx = 0;
*rcx = 0;
*rdx = 0;
@ -6345,6 +6357,12 @@ vmm_handle_cpuid(struct vcpu *vcpu)
*rcx = ecx;
*rdx = edx;
break;
case 0x8000001f: /* encryption features (AMD) */
*rax = eax;
*rbx = ebx;
*rcx = ecx;
*rdx = edx;
break;
default:
DPRINTF("%s: unsupported rax=0x%llx\n", __func__, *rax);
*rax = 0;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: cpu.h,v 1.175 2024/07/21 19:41:31 bluhm Exp $ */
/* $OpenBSD: cpu.h,v 1.176 2024/08/27 09:16:03 bluhm Exp $ */
/* $NetBSD: cpu.h,v 1.1 2003/04/26 18:39:39 fvdl Exp $ */
/*-
@ -415,6 +415,7 @@ void x86_print_cacheinfo(struct cpu_info *);
void identifycpu(struct cpu_info *);
int cpu_amd64speed(int *);
extern int cpuspeed;
extern int amd64_pos_cbit;
/* machdep.c */
void dumpconf(void);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vmmvar.h,v 1.104 2024/07/14 07:57:42 dv Exp $ */
/* $OpenBSD: vmmvar.h,v 1.105 2024/08/27 09:16:03 bluhm Exp $ */
/*
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
*
@ -624,6 +624,7 @@ enum {
/* Forward declarations */
struct vm;
struct vm_create_params;
/*
* Implementation-specific cpu state
@ -636,6 +637,9 @@ struct vmcb_segment {
uint64_t vs_base; /* 008h */
};
#define SVM_ENABLE_NP (1ULL << 0)
#define SVM_ENABLE_SEV (1ULL << 1)
struct vmcb {
union {
struct {
@ -893,6 +897,7 @@ struct vcpu {
paddr_t vc_svm_hsa_pa;
vaddr_t vc_svm_ioio_va;
paddr_t vc_svm_ioio_pa;
int vc_sev; /* [I] */
};
SLIST_HEAD(vcpu_head, vcpu);
@ -921,7 +926,7 @@ int vmm_start(void);
int vmm_stop(void);
int vm_impl_init(struct vm *, struct proc *);
void vm_impl_deinit(struct vm *);
int vcpu_init(struct vcpu *);
int vcpu_init(struct vcpu *, struct vm_create_params *);
void vcpu_deinit(struct vcpu *);
int vm_rwregs(struct vm_rwregs_params *, int);
int vcpu_reset_regs(struct vcpu *, struct vcpu_reg_state *);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: virtio_mmio.c,v 1.14 2024/08/20 07:04:29 sf Exp $ */
/* $OpenBSD: virtio_mmio.c,v 1.16 2024/08/27 19:01:11 sf Exp $ */
/* $NetBSD: virtio.c,v 1.3 2011/11/02 23:05:52 njoly Exp $ */
/*
@ -133,7 +133,7 @@ const struct cfattach virtio_mmio_fdt_ca = {
NULL
};
struct virtio_ops virtio_mmio_ops = {
const struct virtio_ops virtio_mmio_ops = {
virtio_mmio_kick,
virtio_mmio_read_device_config_1,
virtio_mmio_read_device_config_2,
@ -241,6 +241,7 @@ virtio_mmio_attach(struct device *parent, struct device *self, void *aux)
struct virtio_mmio_softc *sc = (struct virtio_mmio_softc *)self;
struct virtio_softc *vsc = &sc->sc_sc;
uint32_t id, magic;
struct virtio_attach_args va = { 0 };
if (faa->fa_nreg < 1) {
printf(": no register data\n");
@ -289,10 +290,10 @@ virtio_mmio_attach(struct device *parent, struct device *self, void *aux)
virtio_mmio_set_status(vsc, VIRTIO_CONFIG_DEVICE_STATUS_ACK);
virtio_mmio_set_status(vsc, VIRTIO_CONFIG_DEVICE_STATUS_DRIVER);
/* XXX: use softc as aux... */
vsc->sc_childdevid = id;
va.va_devid = id;
va.va_nintr = 1;
vsc->sc_child = NULL;
config_found(self, sc, NULL);
config_found(self, &va, NULL);
if (vsc->sc_child == NULL) {
printf("%s: no matching child driver; not configured\n",
vsc->sc_dev.dv_xname);

View File

@ -3103,7 +3103,7 @@ amdgpu_attach(struct device *parent, struct device *self, void *aux)
if (PCI_MAPREG_TYPE(type) != PCI_MAPREG_TYPE_MEM ||
pci_mapreg_info(pa->pa_pc, pa->pa_tag, AMDGPU_PCI_MEM,
type, &adev->fb_aper_offset, &adev->fb_aper_size, NULL)) {
printf(": can't get frambuffer info\n");
printf(": can't get framebuffer info\n");
return;
}

View File

@ -1009,7 +1009,7 @@ radeondrm_attach_kms(struct device *parent, struct device *self, void *aux)
if (PCI_MAPREG_TYPE(type) != PCI_MAPREG_TYPE_MEM ||
pci_mapreg_info(pa->pa_pc, pa->pa_tag, RADEON_PCI_MEM,
type, &rdev->fb_aper_offset, &rdev->fb_aper_size, NULL)) {
printf(": can't get frambuffer info\n");
printf(": can't get framebuffer info\n");
return;
}
if (rdev->fb_aper_offset == 0) {

View File

@ -1,4 +1,4 @@
/* $OpenBSD: virtio_pci.c,v 1.38 2024/06/26 01:40:49 jsg Exp $ */
/* $OpenBSD: virtio_pci.c,v 1.40 2024/08/27 19:01:11 sf Exp $ */
/* $NetBSD: virtio.c,v 1.3 2011/11/02 23:05:52 njoly Exp $ */
/*
@ -53,6 +53,7 @@
#define MAX_MSIX_VECS 8
struct virtio_pci_softc;
struct virtio_pci_attach_args;
int virtio_pci_match(struct device *, void *, void *);
void virtio_pci_attach(struct device *, struct device *, void *);
@ -78,8 +79,8 @@ int virtio_pci_negotiate_features(struct virtio_softc *, const struct virtio_fe
int virtio_pci_negotiate_features_10(struct virtio_softc *, const struct virtio_feature_name *);
void virtio_pci_set_msix_queue_vector(struct virtio_pci_softc *, uint32_t, uint16_t);
void virtio_pci_set_msix_config_vector(struct virtio_pci_softc *, uint16_t);
int virtio_pci_msix_establish(struct virtio_pci_softc *, struct pci_attach_args *, int, int (*)(void *), void *);
int virtio_pci_setup_msix(struct virtio_pci_softc *, struct pci_attach_args *, int);
int virtio_pci_msix_establish(struct virtio_pci_softc *, struct virtio_pci_attach_args *, int, int (*)(void *), void *);
int virtio_pci_setup_msix(struct virtio_pci_softc *, struct virtio_pci_attach_args *, int);
void virtio_pci_free_irqs(struct virtio_pci_softc *);
int virtio_pci_poll_intr(void *);
int virtio_pci_legacy_intr(void *);
@ -136,6 +137,12 @@ struct virtio_pci_softc {
enum irq_type sc_irq_type;
};
struct virtio_pci_attach_args {
struct virtio_attach_args vpa_va;
struct pci_attach_args *vpa_pa;
};
const struct cfattach virtio_pci_ca = {
sizeof(struct virtio_pci_softc),
virtio_pci_match,
@ -144,7 +151,7 @@ const struct cfattach virtio_pci_ca = {
NULL
};
struct virtio_ops virtio_pci_ops = {
const struct virtio_ops virtio_pci_ops = {
virtio_pci_kick,
virtio_pci_read_device_config_1,
virtio_pci_read_device_config_2,
@ -577,6 +584,8 @@ virtio_pci_attach(struct device *parent, struct device *self, void *aux)
pcireg_t id;
char const *intrstr;
pci_intr_handle_t ih;
struct virtio_pci_attach_args vpa = { { 0 }, pa };
int n;
revision = PCI_REVISION(pa->pa_class);
switch (revision) {
@ -608,6 +617,10 @@ virtio_pci_attach(struct device *parent, struct device *self, void *aux)
virtio_pci_dump_caps(sc);
#endif
n = MIN(MAX_MSIX_VECS, pci_intr_msix_count(pa));
n = MAX(n, 1);
vpa.vpa_va.va_nintr = n;
vsc->sc_ops = &virtio_pci_ops;
if ((vsc->sc_dev.dv_cfdata->cf_flags & VIRTIO_CF_NO_VERSION_1) == 0 &&
(revision == 1 ||
@ -633,9 +646,9 @@ virtio_pci_attach(struct device *parent, struct device *self, void *aux)
virtio_set_status(vsc, VIRTIO_CONFIG_DEVICE_STATUS_DRIVER);
printf("\n");
vsc->sc_childdevid = id;
vpa.vpa_va.va_devid = id;
vsc->sc_child = NULL;
config_found(self, sc, NULL);
config_found(self, &vpa, NULL);
if (vsc->sc_child == NULL) {
printf("%s: no matching child driver; not configured\n",
vsc->sc_dev.dv_xname);
@ -647,10 +660,10 @@ virtio_pci_attach(struct device *parent, struct device *self, void *aux)
goto fail_1;
}
if (virtio_pci_setup_msix(sc, pa, 0) == 0) {
if (virtio_pci_setup_msix(sc, &vpa, 0) == 0) {
sc->sc_irq_type = IRQ_MSIX_PER_VQ;
intrstr = "msix per-VQ";
} else if (virtio_pci_setup_msix(sc, pa, 1) == 0) {
} else if (virtio_pci_setup_msix(sc, &vpa, 1) == 0) {
sc->sc_irq_type = IRQ_MSIX_SHARED;
intrstr = "msix shared";
} else {
@ -910,12 +923,13 @@ virtio_pci_write_device_config_8(struct virtio_softc *vsc,
int
virtio_pci_msix_establish(struct virtio_pci_softc *sc,
struct pci_attach_args *pa, int idx, int (*handler)(void *), void *ih_arg)
struct virtio_pci_attach_args *vpa, int idx,
int (*handler)(void *), void *ih_arg)
{
struct virtio_softc *vsc = &sc->sc_sc;
pci_intr_handle_t ih;
if (pci_intr_map_msix(pa, idx, &ih) != 0) {
if (pci_intr_map_msix(vpa->vpa_pa, idx, &ih) != 0) {
#if VIRTIO_DEBUG
printf("%s[%d]: pci_intr_map_msix failed\n",
vsc->sc_dev.dv_xname, idx);
@ -983,27 +997,27 @@ virtio_pci_free_irqs(struct virtio_pci_softc *sc)
}
int
virtio_pci_setup_msix(struct virtio_pci_softc *sc, struct pci_attach_args *pa,
int shared)
virtio_pci_setup_msix(struct virtio_pci_softc *sc,
struct virtio_pci_attach_args *vpa, int shared)
{
struct virtio_softc *vsc = &sc->sc_sc;
int i;
/* Shared needs config + queue */
if (shared && pci_intr_msix_count(pa) < 1 + 1)
if (shared && vpa->vpa_va.va_nintr < 1 + 1)
return 1;
/* Per VQ needs config + N * queue */
if (!shared && pci_intr_msix_count(pa) < 1 + vsc->sc_nvqs)
if (!shared && vpa->vpa_va.va_nintr < 1 + vsc->sc_nvqs)
return 1;
if (virtio_pci_msix_establish(sc, pa, 0, virtio_pci_config_intr, vsc))
if (virtio_pci_msix_establish(sc, vpa, 0, virtio_pci_config_intr, vsc))
return 1;
sc->sc_devcfg_offset = VIRTIO_CONFIG_DEVICE_CONFIG_MSI;
virtio_pci_adjust_config_region(sc);
virtio_pci_set_msix_config_vector(sc, 0);
if (shared) {
if (virtio_pci_msix_establish(sc, pa, 1,
if (virtio_pci_msix_establish(sc, vpa, 1,
virtio_pci_shared_queue_intr, vsc)) {
goto fail;
}
@ -1012,7 +1026,7 @@ virtio_pci_setup_msix(struct virtio_pci_softc *sc, struct pci_attach_args *pa,
virtio_pci_set_msix_queue_vector(sc, i, 1);
} else {
for (i = 0; i < vsc->sc_nvqs; i++) {
if (virtio_pci_msix_establish(sc, pa, i + 1,
if (virtio_pci_msix_establish(sc, vpa, i + 1,
virtio_pci_queue_intr, &vsc->sc_vqs[i])) {
goto fail;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: if_vio.c,v 1.46 2024/08/16 13:02:44 jan Exp $ */
/* $OpenBSD: if_vio.c,v 1.50 2024/08/27 19:11:20 sf Exp $ */
/*
* Copyright (c) 2012 Stefan Fritsch, Alexander Fiveg.
@ -330,9 +330,9 @@ void vio_dump(struct vio_softc *);
int
vio_match(struct device *parent, void *match, void *aux)
{
struct virtio_softc *va = aux;
struct virtio_attach_args *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_NETWORK)
if (va->va_devid == PCI_PRODUCT_VIRTIO_NETWORK)
return 1;
return 0;
@ -443,7 +443,7 @@ vio_alloc_mem(struct vio_softc *sc)
if (vio_alloc_dmamem(sc) != 0) {
printf("unable to allocate dma region\n");
return -1;
return -1;
}
kva = sc->sc_dma_kva;
@ -588,7 +588,7 @@ vio_attach(struct device *parent, struct device *self, void *aux)
ether_fakeaddr(ifp);
vio_put_lladdr(&sc->sc_ac, vsc);
}
printf(": address %s\n", ether_sprintf(sc->sc_ac.ac_enaddr));
printf(", address %s\n", ether_sprintf(sc->sc_ac.ac_enaddr));
if (virtio_has_feature(vsc, VIRTIO_NET_F_MRG_RXBUF) ||
vsc->sc_version_1) {
@ -599,14 +599,13 @@ vio_attach(struct device *parent, struct device *self, void *aux)
if (virtio_has_feature(vsc, VIRTIO_NET_F_MRG_RXBUF))
ifp->if_hardmtu = MAXMCLBYTES;
else
ifp->if_hardmtu = MAXMCLBYTES - sc->sc_hdr_size - ETHER_HDR_LEN;
ifp->if_hardmtu = MCLBYTES - sc->sc_hdr_size - ETHER_HDR_LEN;
if (virtio_alloc_vq(vsc, &sc->sc_vq[VQRX], 0, MCLBYTES, 2, "rx") != 0)
if (virtio_alloc_vq(vsc, &sc->sc_vq[VQRX], 0, 2, "rx") != 0)
goto err;
vsc->sc_nvqs = 1;
sc->sc_vq[VQRX].vq_done = vio_rx_intr;
if (virtio_alloc_vq(vsc, &sc->sc_vq[VQTX], 1,
sc->sc_hdr_size + ifp->if_hardmtu + ETHER_HDR_LEN,
VIRTIO_NET_TX_MAXNSEGS + 1, "tx") != 0) {
goto err;
}
@ -618,7 +617,7 @@ vio_attach(struct device *parent, struct device *self, void *aux)
else
virtio_stop_vq_intr(vsc, &sc->sc_vq[VQTX]);
if (virtio_has_feature(vsc, VIRTIO_NET_F_CTRL_VQ)) {
if (virtio_alloc_vq(vsc, &sc->sc_vq[VQCTL], 2, NBPG, 1,
if (virtio_alloc_vq(vsc, &sc->sc_vq[VQCTL], 2, 1,
"control") == 0) {
sc->sc_vq[VQCTL].vq_done = vio_ctrleof;
virtio_start_vq_intr(vsc, &sc->sc_vq[VQCTL]);
@ -1503,8 +1502,8 @@ vio_ctrl_guest_offloads(struct vio_softc *sc, uint64_t features)
if (sc->sc_ctrl_status->ack == VIRTIO_NET_OK) {
r = 0;
} else {
printf("%s: features 0x%llx failed\n", sc->sc_dev.dv_xname,
features);
printf("%s: offload features 0x%llx failed\n",
sc->sc_dev.dv_xname, features);
r = EIO;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vioblk.c,v 1.41 2024/08/01 11:13:19 sf Exp $ */
/* $OpenBSD: vioblk.c,v 1.43 2024/08/27 18:44:12 sf Exp $ */
/*
* Copyright (c) 2012 Stefan Fritsch.
@ -156,8 +156,8 @@ const struct scsi_adapter vioblk_switch = {
int
vioblk_match(struct device *parent, void *match, void *aux)
{
struct virtio_softc *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_BLOCK)
struct virtio_attach_args *va = aux;
if (va->va_devid == PCI_PRODUCT_VIRTIO_BLOCK)
return 1;
return 0;
}
@ -208,8 +208,8 @@ vioblk_attach(struct device *parent, struct device *self, void *aux)
sc->sc_capacity = virtio_read_device_config_8(vsc,
VIRTIO_BLK_CONFIG_CAPACITY);
if (virtio_alloc_vq(vsc, &sc->sc_vq[0], 0, MAXPHYS, ALLOC_SEGS,
"I/O request") != 0) {
if (virtio_alloc_vq(vsc, &sc->sc_vq[0], 0, ALLOC_SEGS, "I/O request")
!= 0) {
printf("\nCan't alloc virtqueue\n");
goto err;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: viocon.c,v 1.13 2024/08/01 11:13:19 sf Exp $ */
/* $OpenBSD: viocon.c,v 1.15 2024/08/27 18:44:12 sf Exp $ */
/*
* Copyright (c) 2013-2015 Stefan Fritsch <sf@sfritsch.de>
@ -162,8 +162,8 @@ dev2port(dev_t dev)
int
viocon_match(struct device *parent, void *match, void *aux)
{
struct virtio_softc *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_CONSOLE)
struct virtio_attach_args *va = aux;
if (va->va_devid == PCI_PRODUCT_VIRTIO_CONSOLE)
return 1;
return 0;
}
@ -235,8 +235,7 @@ viocon_port_create(struct viocon_softc *sc, int portidx)
txidx = rxidx + 1;
snprintf(name, sizeof(name), "p%drx", portidx);
if (virtio_alloc_vq(vsc, &vsc->sc_vqs[rxidx], rxidx, BUFSIZE, 1,
name) != 0) {
if (virtio_alloc_vq(vsc, &vsc->sc_vqs[rxidx], rxidx, 1, name) != 0) {
printf("\nCan't alloc %s virtqueue\n", name);
goto err;
}
@ -246,8 +245,7 @@ viocon_port_create(struct viocon_softc *sc, int portidx)
DPRINTF("%s: rx: %p\n", __func__, vp->vp_rx);
snprintf(name, sizeof(name), "p%dtx", portidx);
if (virtio_alloc_vq(vsc, &vsc->sc_vqs[txidx], txidx, BUFSIZE, 1,
name) != 0) {
if (virtio_alloc_vq(vsc, &vsc->sc_vqs[txidx], txidx, 1, name) != 0) {
printf("\nCan't alloc %s virtqueue\n", name);
goto err;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: viogpu.c,v 1.7 2024/08/01 11:13:19 sf Exp $ */
/* $OpenBSD: viogpu.c,v 1.9 2024/08/27 18:44:12 sf Exp $ */
/*
* Copyright (c) 2021-2023 joshua stein <jcs@openbsd.org>
@ -137,9 +137,9 @@ struct cfdriver viogpu_cd = {
int
viogpu_match(struct device *parent, void *match, void *aux)
{
struct virtio_softc *va = aux;
struct virtio_attach_args *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_GPU)
if (va->va_devid == PCI_PRODUCT_VIRTIO_GPU)
return 1;
return 0;
@ -173,15 +173,13 @@ viogpu_attach(struct device *parent, struct device *self, void *aux)
/* allocate command and cursor virtqueues */
vsc->sc_vqs = sc->sc_vqs;
if (virtio_alloc_vq(vsc, &sc->sc_vqs[VQCTRL], VQCTRL, NBPG, 1,
"control")) {
if (virtio_alloc_vq(vsc, &sc->sc_vqs[VQCTRL], VQCTRL, 1, "control")) {
printf(": alloc_vq failed\n");
return;
}
sc->sc_vqs[VQCTRL].vq_done = viogpu_vq_done;
if (virtio_alloc_vq(vsc, &sc->sc_vqs[VQCURS], VQCURS, NBPG, 1,
"cursor")) {
if (virtio_alloc_vq(vsc, &sc->sc_vqs[VQCURS], VQCURS, 1, "cursor")) {
printf(": alloc_vq failed\n");
return;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: viomb.c,v 1.10 2024/05/24 10:05:55 jsg Exp $ */
/* $OpenBSD: viomb.c,v 1.12 2024/08/27 18:44:12 sf Exp $ */
/* $NetBSD: viomb.c,v 1.1 2011/10/30 12:12:21 hannken Exp $ */
/*
@ -124,8 +124,8 @@ struct cfdriver viomb_cd = {
int
viomb_match(struct device *parent, void *match, void *aux)
{
struct virtio_softc *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_BALLOON)
struct virtio_attach_args *va = aux;
if (va->va_devid == PCI_PRODUCT_VIRTIO_BALLOON)
return (1);
return (0);
}
@ -161,12 +161,12 @@ viomb_attach(struct device *parent, struct device *self, void *aux)
if (virtio_negotiate_features(vsc, viomb_feature_names) != 0)
goto err;
if ((virtio_alloc_vq(vsc, &sc->sc_vq[VQ_INFLATE], VQ_INFLATE,
sizeof(u_int32_t) * PGS_PER_REQ, 1, "inflate") != 0))
if ((virtio_alloc_vq(vsc, &sc->sc_vq[VQ_INFLATE], VQ_INFLATE, 1,
"inflate") != 0))
goto err;
vsc->sc_nvqs++;
if ((virtio_alloc_vq(vsc, &sc->sc_vq[VQ_DEFLATE], VQ_DEFLATE,
sizeof(u_int32_t) * PGS_PER_REQ, 1, "deflate") != 0))
if ((virtio_alloc_vq(vsc, &sc->sc_vq[VQ_DEFLATE], VQ_DEFLATE, 1,
"deflate") != 0))
goto err;
vsc->sc_nvqs++;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: viornd.c,v 1.9 2024/06/26 01:40:49 jsg Exp $ */
/* $OpenBSD: viornd.c,v 1.11 2024/08/27 18:44:12 sf Exp $ */
/*
* Copyright (c) 2014 Stefan Fritsch <sf@sfritsch.de>
@ -72,8 +72,8 @@ struct cfdriver viornd_cd = {
int
viornd_match(struct device *parent, void *match, void *aux)
{
struct virtio_softc *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_ENTROPY)
struct virtio_attach_args *va = aux;
if (va->va_devid == PCI_PRODUCT_VIRTIO_ENTROPY)
return 1;
return 0;
}
@ -125,8 +125,7 @@ viornd_attach(struct device *parent, struct device *self, void *aux)
goto err2;
}
if (virtio_alloc_vq(vsc, &sc->sc_vq, 0, VIORND_BUFSIZE, 1,
"Entropy request") != 0) {
if (virtio_alloc_vq(vsc, &sc->sc_vq, 0, 1, "Entropy request") != 0) {
printf(": Can't alloc virtqueue\n");
goto err2;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vioscsi.c,v 1.32 2023/05/29 08:13:35 sf Exp $ */
/* $OpenBSD: vioscsi.c,v 1.34 2024/08/27 18:44:12 sf Exp $ */
/*
* Copyright (c) 2013 Google Inc.
*
@ -93,9 +93,9 @@ const char *const vioscsi_vq_names[] = {
int
vioscsi_match(struct device *parent, void *self, void *aux)
{
struct virtio_softc *va = (struct virtio_softc *)aux;
struct virtio_attach_args *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_SCSI)
if (va->va_devid == PCI_PRODUCT_VIRTIO_SCSI)
return (1);
return (0);
}
@ -134,8 +134,8 @@ vioscsi_attach(struct device *parent, struct device *self, void *aux)
}
for (i = 0; i < nitems(sc->sc_vqs); i++) {
rv = virtio_alloc_vq(vsc, &sc->sc_vqs[i], i, MAXPHYS,
ALLOC_SEGS, vioscsi_vq_names[i]);
rv = virtio_alloc_vq(vsc, &sc->sc_vqs[i], i, ALLOC_SEGS,
vioscsi_vq_names[i]);
if (rv) {
printf(": failed to allocate virtqueue %d\n", i);
goto err;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: virtio.c,v 1.30 2024/08/13 08:47:28 sf Exp $ */
/* $OpenBSD: virtio.c,v 1.31 2024/08/27 18:44:12 sf Exp $ */
/* $NetBSD: virtio.c,v 1.3 2011/11/02 23:05:52 njoly Exp $ */
/*
@ -329,7 +329,7 @@ virtio_init_vq(struct virtio_softc *sc, struct virtqueue *vq)
*/
int
virtio_alloc_vq(struct virtio_softc *sc, struct virtqueue *vq, int index,
int maxsegsize, int maxnsegs, const char *name)
int maxnsegs, const char *name)
{
int vq_size, allocsize1, allocsize2, allocsize3, allocsize = 0;
int rsegs, r, hdrlen;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: virtiovar.h,v 1.18 2024/05/17 16:37:10 sf Exp $ */
/* $OpenBSD: virtiovar.h,v 1.21 2024/08/27 19:01:11 sf Exp $ */
/* $NetBSD: virtiovar.h,v 1.1 2011/10/30 12:12:21 hannken Exp $ */
/*
@ -85,6 +85,11 @@
#define VIRTIO_CF_PREFER_VERSION_1 4
#define VIRTIO_CF_NO_VERSION_1 8
struct virtio_attach_args {
int va_devid; /* virtio device id */
unsigned int va_nintr; /* number of intr vectors */
};
struct vq_entry {
SLIST_ENTRY(vq_entry) qe_list; /* free list */
uint16_t qe_index; /* index in vq_desc array */
@ -122,14 +127,11 @@ struct virtqueue {
/* free entry management */
struct vq_entry *vq_entries;
SLIST_HEAD(, vq_entry) vq_freelist;
struct mutex *vq_freelist_lock;
/* enqueue/dequeue status */
uint16_t vq_avail_idx;
uint16_t vq_used_idx;
int vq_queued;
struct mutex *vq_aring_lock;
struct mutex *vq_uring_lock;
/* interrupt handler */
int (*vq_done)(struct virtqueue*);
@ -165,7 +167,7 @@ struct virtio_ops {
struct virtio_softc {
struct device sc_dev;
bus_dma_tag_t sc_dmat; /* set by transport */
struct virtio_ops *sc_ops; /* set by transport */
const struct virtio_ops *sc_ops; /* set by transport */
int sc_ipl; /* set by child */
@ -177,7 +179,6 @@ struct virtio_softc {
int sc_nvqs; /* set by child */
struct virtqueue *sc_vqs; /* set by child */
int sc_childdevid; /* set by transport */
struct device *sc_child; /* set by child,
* VIRTIO_CHILD_ERROR on error
*/
@ -212,7 +213,7 @@ virtio_has_feature(struct virtio_softc *sc, uint64_t fbit)
return 0;
}
int virtio_alloc_vq(struct virtio_softc*, struct virtqueue*, int, int, int,
int virtio_alloc_vq(struct virtio_softc*, struct virtqueue*, int, int,
const char*);
int virtio_free_vq(struct virtio_softc*, struct virtqueue*);
void virtio_reset(struct virtio_softc *);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vmmci.c,v 1.11 2024/05/24 10:05:55 jsg Exp $ */
/* $OpenBSD: vmmci.c,v 1.12 2024/08/26 19:37:54 sf Exp $ */
/*
* Copyright (c) 2017 Reyk Floeter <reyk@openbsd.org>
@ -78,8 +78,8 @@ struct cfdriver vmmci_cd = {
int
vmmci_match(struct device *parent, void *match, void *aux)
{
struct virtio_softc *va = aux;
if (va->sc_childdevid == PCI_PRODUCT_VIRTIO_VMMCI)
struct virtio_attach_args *va = aux;
if (va->va_devid == PCI_PRODUCT_VIRTIO_VMMCI)
return (1);
return (0);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: usb_quirks.c,v 1.78 2021/03/24 02:49:57 jcs Exp $ */
/* $OpenBSD: usb_quirks.c,v 1.79 2024/08/27 12:41:18 sthen Exp $ */
/* $NetBSD: usb_quirks.c,v 1.45 2003/05/10 17:47:14 hamajima Exp $ */
/* $FreeBSD: src/sys/dev/usb/usb_quirks.c,v 1.30 2003/01/02 04:15:55 imp Exp $ */
@ -154,12 +154,24 @@ const struct usbd_quirk_entry {
ANY, { UQ_MS_VENDOR_BUTTONS }},
/* Devices that need their data pipe held open */
{ USB_VENDOR_CHICONY, USB_PRODUCT_CHICONY_OPTMOUSE,
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_HAILUCK, USB_PRODUCT_HAILUCK_KEYBOARD,
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_LENOVO, USB_PRODUCT_LENOVO_OPTUSBMOUSE,
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_B100_1,
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_B100_2,
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_PIXARTMOUSE,
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_TYPECOVER,
ANY, { UQ_ALWAYS_OPEN }},
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_TYPECOVER2,
ANY, { UQ_ALWAYS_OPEN }},
ANY, { UQ_ALWAYS_OPEN }},
{ USB_VENDOR_PIXART, USB_PRODUCT_PIXART_RPIMOUSE,
ANY, { UQ_ALWAYS_OPEN }},
{ 0, 0, 0, { 0 } }
};

View File

@ -1,4 +1,4 @@
$OpenBSD: usbdevs,v 1.767 2024/08/08 05:09:09 deraadt Exp $
$OpenBSD: usbdevs,v 1.768 2024/08/27 12:31:18 sthen Exp $
/* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
/*
@ -365,6 +365,7 @@ vendor GARMIN 0x091e Garmin International
vendor GOHUBS 0x0921 GoHubs
vendor BIOMETRIC 0x0929 American Biometric Company
vendor TOSHIBA 0x0930 Toshiba Corp
vendor PIXART 0x093a PixArt
vendor INTREPIDCS 0x093c Intrepid
vendor YANO 0x094f Yano
vendor KINGSTON 0x0951 Kingston Technology
@ -1347,6 +1348,7 @@ product CHIC CYPRESS 0x0003 Cypress
/* Chicony products */
product CHICONY KB8933 0x0001 KB-8933 keyboard
product CHICONY OPTMOUSE 0x0939 Optical Mouse
product CHICONY CAMERA 0x480c Integrated Camera
product CHICONY RTL8188CUS_1 0xaff7 RTL8188CUS
product CHICONY RTL8188CUS_2 0xaff8 RTL8188CUS
@ -2638,6 +2640,7 @@ product LENOVO RTL8153B_2 0x3098 RTL8153B
product LENOVO RTL8153B_3 0x309b RTL8153B
product LENOVO RTL8153B_4 0x309c RTL8153B
product LENOVO RTL8153B_5 0x309d RTL8153B
product LENOVO OPTUSBMOUSE 0x600e Optical Mouse
product LENOVO ETHERNET 0x7203 USB 2.0 Ethernet
product LENOVO RTL8153_1 0x7205 RTL8153
product LENOVO ONELINK 0x720a OneLink
@ -2753,6 +2756,8 @@ product LOGITECH MBA47 0xc002 M-BA47 mouse
product LOGITECH WMMOUSE 0xc004 WingMan Gaming Mouse
product LOGITECH BD58 0xc00c BD58 mouse
product LOGITECH UN58A 0xc030 iFeel Mouse
product LOGITECH B100_1 0xc05a B100 mouse
product LOGITECH B100_2 0xc077 B100 mouse
product LOGITECH WMPAD 0xc208 WingMan GamePad Extreme
product LOGITECH WMRPAD 0xc20a WingMan RumblePad
product LOGITECH WMJOY 0xc281 WingMan Force joystick
@ -3139,6 +3144,7 @@ product MICROSOFT INETPRO 0x001c Internet Keyboard Pro
product MICROSOFT TBEXPLORER 0x0024 Trackball Explorer
product MICROSOFT INTELLIEYE 0x0025 IntelliEye mouse
product MICROSOFT INETPRO2 0x002b Internet Keyboard Pro
product MICROSOFT PIXARTMOUSE 0x00cb Optical Mouse
product MICROSOFT MN510 0x006e MN510 Wireless
product MICROSOFT 700WX 0x0079 Palm 700WX
product MICROSOFT MN110 0x007a 10/100 Ethernet
@ -3600,6 +3606,10 @@ product PILOTECH CRW600 0x0001 CRW-600 6-in-1
product PIONEERDJ RTL8152B 0x0007 RTL8152B
product PIONEERDJ RTL8153B 0x0031 RTL8153B
/* PixArt products */
product PIXART RPIMOUSE 0x2510 Raspberry Pi Mouse
/* Planex Communications products */
product PLANEX GW_US11H 0x14ea GW-US11H WLAN
product PLANEX2 RTL8188CUS 0x1201 RTL8188CUS

View File

@ -1,10 +1,10 @@
/* $OpenBSD: usbdevs.h,v 1.779 2024/08/08 05:09:33 deraadt Exp $ */
/* $OpenBSD: usbdevs.h,v 1.780 2024/08/27 12:31:43 sthen Exp $ */
/*
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
* OpenBSD: usbdevs,v 1.767 2024/08/08 05:09:09 deraadt Exp
* OpenBSD: usbdevs,v 1.768 2024/08/27 12:31:18 sthen Exp
*/
/* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
@ -372,6 +372,7 @@
#define USB_VENDOR_GOHUBS 0x0921 /* GoHubs */
#define USB_VENDOR_BIOMETRIC 0x0929 /* American Biometric Company */
#define USB_VENDOR_TOSHIBA 0x0930 /* Toshiba Corp */
#define USB_VENDOR_PIXART 0x093a /* PixArt */
#define USB_VENDOR_INTREPIDCS 0x093c /* Intrepid */
#define USB_VENDOR_YANO 0x094f /* Yano */
#define USB_VENDOR_KINGSTON 0x0951 /* Kingston Technology */
@ -1354,6 +1355,7 @@
/* Chicony products */
#define USB_PRODUCT_CHICONY_KB8933 0x0001 /* KB-8933 keyboard */
#define USB_PRODUCT_CHICONY_OPTMOUSE 0x0939 /* Optical Mouse */
#define USB_PRODUCT_CHICONY_CAMERA 0x480c /* Integrated Camera */
#define USB_PRODUCT_CHICONY_RTL8188CUS_1 0xaff7 /* RTL8188CUS */
#define USB_PRODUCT_CHICONY_RTL8188CUS_2 0xaff8 /* RTL8188CUS */
@ -2645,6 +2647,7 @@
#define USB_PRODUCT_LENOVO_RTL8153B_3 0x309b /* RTL8153B */
#define USB_PRODUCT_LENOVO_RTL8153B_4 0x309c /* RTL8153B */
#define USB_PRODUCT_LENOVO_RTL8153B_5 0x309d /* RTL8153B */
#define USB_PRODUCT_LENOVO_OPTUSBMOUSE 0x600e /* Optical Mouse */
#define USB_PRODUCT_LENOVO_ETHERNET 0x7203 /* USB 2.0 Ethernet */
#define USB_PRODUCT_LENOVO_RTL8153_1 0x7205 /* RTL8153 */
#define USB_PRODUCT_LENOVO_ONELINK 0x720a /* OneLink */
@ -2760,6 +2763,8 @@
#define USB_PRODUCT_LOGITECH_WMMOUSE 0xc004 /* WingMan Gaming Mouse */
#define USB_PRODUCT_LOGITECH_BD58 0xc00c /* BD58 mouse */
#define USB_PRODUCT_LOGITECH_UN58A 0xc030 /* iFeel Mouse */
#define USB_PRODUCT_LOGITECH_B100_1 0xc05a /* B100 mouse */
#define USB_PRODUCT_LOGITECH_B100_2 0xc077 /* B100 mouse */
#define USB_PRODUCT_LOGITECH_WMPAD 0xc208 /* WingMan GamePad Extreme */
#define USB_PRODUCT_LOGITECH_WMRPAD 0xc20a /* WingMan RumblePad */
#define USB_PRODUCT_LOGITECH_WMJOY 0xc281 /* WingMan Force joystick */
@ -3146,6 +3151,7 @@
#define USB_PRODUCT_MICROSOFT_TBEXPLORER 0x0024 /* Trackball Explorer */
#define USB_PRODUCT_MICROSOFT_INTELLIEYE 0x0025 /* IntelliEye mouse */
#define USB_PRODUCT_MICROSOFT_INETPRO2 0x002b /* Internet Keyboard Pro */
#define USB_PRODUCT_MICROSOFT_PIXARTMOUSE 0x00cb /* Optical Mouse */
#define USB_PRODUCT_MICROSOFT_MN510 0x006e /* MN510 Wireless */
#define USB_PRODUCT_MICROSOFT_700WX 0x0079 /* Palm 700WX */
#define USB_PRODUCT_MICROSOFT_MN110 0x007a /* 10/100 Ethernet */
@ -3607,6 +3613,10 @@
#define USB_PRODUCT_PIONEERDJ_RTL8152B 0x0007 /* RTL8152B */
#define USB_PRODUCT_PIONEERDJ_RTL8153B 0x0031 /* RTL8153B */
/* PixArt products */
#define USB_PRODUCT_PIXART_RPIMOUSE 0x2510 /* Raspberry Pi Mouse */
/* Planex Communications products */
#define USB_PRODUCT_PLANEX_GW_US11H 0x14ea /* GW-US11H WLAN */
#define USB_PRODUCT_PLANEX2_RTL8188CUS 0x1201 /* RTL8188CUS */

View File

@ -1,10 +1,10 @@
/* $OpenBSD: usbdevs_data.h,v 1.773 2024/08/08 05:09:33 deraadt Exp $ */
/* $OpenBSD: usbdevs_data.h,v 1.774 2024/08/27 12:31:43 sthen Exp $ */
/*
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
* OpenBSD: usbdevs,v 1.767 2024/08/08 05:09:09 deraadt Exp
* OpenBSD: usbdevs,v 1.768 2024/08/27 12:31:18 sthen Exp
*/
/* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
@ -1941,6 +1941,10 @@ const struct usb_known_product usb_known_products[] = {
USB_VENDOR_CHICONY, USB_PRODUCT_CHICONY_KB8933,
"KB-8933 keyboard",
},
{
USB_VENDOR_CHICONY, USB_PRODUCT_CHICONY_OPTMOUSE,
"Optical Mouse",
},
{
USB_VENDOR_CHICONY, USB_PRODUCT_CHICONY_CAMERA,
"Integrated Camera",
@ -5841,6 +5845,10 @@ const struct usb_known_product usb_known_products[] = {
USB_VENDOR_LENOVO, USB_PRODUCT_LENOVO_RTL8153B_5,
"RTL8153B",
},
{
USB_VENDOR_LENOVO, USB_PRODUCT_LENOVO_OPTUSBMOUSE,
"Optical Mouse",
},
{
USB_VENDOR_LENOVO, USB_PRODUCT_LENOVO_ETHERNET,
"USB 2.0 Ethernet",
@ -6229,6 +6237,14 @@ const struct usb_known_product usb_known_products[] = {
USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_UN58A,
"iFeel Mouse",
},
{
USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_B100_1,
"B100 mouse",
},
{
USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_B100_2,
"B100 mouse",
},
{
USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_WMPAD,
"WingMan GamePad Extreme",
@ -7605,6 +7621,10 @@ const struct usb_known_product usb_known_products[] = {
USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_INETPRO2,
"Internet Keyboard Pro",
},
{
USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_PIXARTMOUSE,
"Optical Mouse",
},
{
USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_MN510,
"MN510 Wireless",
@ -8881,6 +8901,10 @@ const struct usb_known_product usb_known_products[] = {
USB_VENDOR_PIONEERDJ, USB_PRODUCT_PIONEERDJ_RTL8153B,
"RTL8153B",
},
{
USB_VENDOR_PIXART, USB_PRODUCT_PIXART_RPIMOUSE,
"Raspberry Pi Mouse",
},
{
USB_VENDOR_PLANEX, USB_PRODUCT_PLANEX_GW_US11H,
"GW-US11H WLAN",
@ -13597,6 +13621,10 @@ const struct usb_known_vendor usb_known_vendors[] = {
USB_VENDOR_TOSHIBA,
"Toshiba Corp",
},
{
USB_VENDOR_PIXART,
"PixArt",
},
{
USB_VENDOR_INTREPIDCS,
"Intrepid",

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vmm.c,v 1.2 2023/05/13 23:15:28 dv Exp $ */
/* $OpenBSD: vmm.c,v 1.3 2024/08/27 09:16:03 bluhm Exp $ */
/*
* Copyright (c) 2014-2023 Mike Larkin <mlarkin@openbsd.org>
*
@ -399,13 +399,13 @@ vm_create(struct vm_create_params *vcp, struct proc *p)
vcpu = pool_get(&vcpu_pool, PR_WAITOK | PR_ZERO);
vcpu->vc_parent = vm;
if ((ret = vcpu_init(vcpu)) != 0) {
vcpu->vc_id = vm->vm_vcpu_ct;
vm->vm_vcpu_ct++;
if ((ret = vcpu_init(vcpu, vcp)) != 0) {
printf("failed to init vcpu %d for vm %p\n", i, vm);
vm_teardown(&vm);
return (ret);
}
vcpu->vc_id = vm->vm_vcpu_ct;
vm->vm_vcpu_ct++;
/* Publish vcpu to list, inheriting the reference. */
SLIST_INSERT_HEAD(&vm->vm_vcpu_list, vcpu, vc_vcpu_link);
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: vmm.h,v 1.6 2024/07/10 10:41:19 dv Exp $ */
/* $OpenBSD: vmm.h,v 1.7 2024/08/27 09:16:03 bluhm Exp $ */
/*
* Copyright (c) 2014-2023 Mike Larkin <mlarkin@openbsd.org>
*
@ -49,9 +49,12 @@ struct vm_create_params {
size_t vcp_ncpus;
struct vm_mem_range vcp_memranges[VMM_MAX_MEM_RANGES];
char vcp_name[VMM_MAX_NAME_LEN];
int vcp_sev;
/* Output parameter from VMM_IOC_CREATE */
uint32_t vcp_id;
uint32_t vcp_poscbit;
uint32_t vcp_asid[VMM_MAX_VCPUS];
};
struct vm_info_result {

View File

@ -1,4 +1,4 @@
/* $OpenBSD: pfvar.h,v 1.538 2024/05/13 01:15:53 jsg Exp $ */
/* $OpenBSD: pfvar.h,v 1.539 2024/08/27 13:52:41 aisha Exp $ */
/*
* Copyright (c) 2001 Daniel Hartmeier
@ -1034,10 +1034,6 @@ struct pfr_ktable {
#define pfrkt_nomatch pfrkt_ts.pfrts_nomatch
#define pfrkt_tzero pfrkt_ts.pfrts_tzero
RB_HEAD(pf_state_tree_ext_gwy, pf_state_key);
RB_PROTOTYPE(pf_state_tree_ext_gwy, pf_state_key,
entry_ext_gwy, pf_state_compare_ext_gwy)
RB_HEAD(pfi_ifhead, pfi_kif);
/* state tables */

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ts.c,v 1.28 2024/03/25 10:16:02 tb Exp $ */
/* $OpenBSD: ts.c,v 1.29 2024/08/26 18:40:50 tb Exp $ */
/* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL
* project 2002.
*/
@ -950,7 +950,7 @@ create_response(CONF *conf, const char *section, char *queryfile, char *passin,
if (!TS_CONF_set_clock_precision_digits(conf, section, resp_ctx))
goto end;
/* Setting the ordering flaf if requested. */
/* Setting the ordering flag if requested. */
if (!TS_CONF_set_ordering(conf, section, resp_ctx))
goto end;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: commands.c,v 1.88 2022/12/26 19:16:03 jmc Exp $ */
/* $OpenBSD: commands.c,v 1.89 2024/08/26 21:34:32 op Exp $ */
/* $NetBSD: commands.c,v 1.14 1996/03/24 22:03:48 jtk Exp $ */
/*
@ -358,6 +358,7 @@ send_tncmd(void (*func)(int, int), char *cmd, char *name)
{
char **cpp;
extern char *telopts[];
const char *errstr;
int val = 0;
if (isprefix(name, "help") || isprefix(name, "?")) {
@ -389,20 +390,10 @@ send_tncmd(void (*func)(int, int), char *cmd, char *name)
if (cpp) {
val = cpp - telopts;
} else {
char *cp = name;
while (*cp >= '0' && *cp <= '9') {
val *= 10;
val += *cp - '0';
cp++;
}
if (*cp != 0) {
fprintf(stderr, "'%s': unknown argument ('send %s ?' for help).\r\n",
name, cmd);
return 0;
} else if (val < 0 || val > 255) {
fprintf(stderr, "'%s': bad value ('send %s ?' for help).\r\n",
name, cmd);
val = strtonum(name, 0, 255, &errstr);
if (errstr) {
fprintf(stderr, "'%s': %s ('send %s ?' for help).\r\n",
name, errstr, cmd);
return 0;
}
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: hyperlinks.c,v 1.3 2023/06/30 13:19:32 nicm Exp $ */
/* $OpenBSD: hyperlinks.c,v 1.4 2024/08/27 07:49:07 nicm Exp $ */
/*
* Copyright (c) 2021 Will <author@will.party>
@ -69,6 +69,7 @@ struct hyperlinks {
u_int next_inner;
struct hyperlinks_by_inner_tree by_inner;
struct hyperlinks_by_uri_tree by_uri;
u_int references;
};
static int
@ -206,6 +207,15 @@ hyperlinks_init(void)
hl->next_inner = 1;
RB_INIT(&hl->by_uri);
RB_INIT(&hl->by_inner);
hl->references = 1;
return (hl);
}
/* Copy hyperlink set. */
struct hyperlinks *
hyperlinks_copy(struct hyperlinks *hl)
{
hl->references++;
return (hl);
}
@ -223,6 +233,8 @@ hyperlinks_reset(struct hyperlinks *hl)
void
hyperlinks_free(struct hyperlinks *hl)
{
hyperlinks_reset(hl);
free(hl);
if (--hl->references == 0) {
hyperlinks_reset(hl);
free(hl);
}
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: server-client.c,v 1.406 2024/08/26 07:30:46 nicm Exp $ */
/* $OpenBSD: server-client.c,v 1.407 2024/08/27 07:25:27 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com>
@ -783,8 +783,7 @@ have_event:
log_debug("mouse on pane %%%u border", wp->id);
m->wp = wp->id;
m->w = wp->window->id;
} else
m->wp = -1;
}
/* Stop dragging if needed. */
if (type != DRAG && type != WHEEL && c->tty.mouse_drag_flag != 0) {

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: tmux.1,v 1.952 2024/08/26 07:09:34 nicm Exp $
.\" $OpenBSD: tmux.1,v 1.954 2024/08/27 07:49:07 nicm Exp $
.\"
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
.\"
@ -14,7 +14,7 @@
.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd $Mdocdate: August 26 2024 $
.Dd $Mdocdate: August 27 2024 $
.Dt TMUX 1
.Os
.Sh NAME
@ -5498,6 +5498,7 @@ The following variables are available, where appropriate:
.It Li "command_list_name" Ta "" Ta "Command name if listing commands"
.It Li "command_list_usage" Ta "" Ta "Command usage if listing commands"
.It Li "config_files" Ta "" Ta "List of configuration files loaded"
.It Li "copy_cursor_hyperlink" Ta "" Ta "Hyperlink under cursor in copy mode"
.It Li "copy_cursor_line" Ta "" Ta "Line the cursor is on in copy mode"
.It Li "copy_cursor_word" Ta "" Ta "Word under cursor in copy mode"
.It Li "copy_cursor_x" Ta "" Ta "Cursor X position in copy mode"
@ -5584,6 +5585,8 @@ The following variables are available, where appropriate:
.It Li "scroll_position" Ta "" Ta "Scroll position in copy mode"
.It Li "scroll_region_lower" Ta "" Ta "Bottom of scroll region in pane"
.It Li "scroll_region_upper" Ta "" Ta "Top of scroll region in pane"
.It Li "search_count" Ta "" Ta "Count of search results"
.It Li "search_count_partial" Ta "" Ta "1 if search count is partial count"
.It Li "search_match" Ta "" Ta "Search match if any"
.It Li "search_present" Ta "" Ta "1 if search started in copy mode"
.It Li "selection_active" Ta "" Ta "1 if selection started and changes with the cursor in copy mode"

View File

@ -1,4 +1,4 @@
/* $OpenBSD: tmux.h,v 1.1225 2024/08/26 07:30:46 nicm Exp $ */
/* $OpenBSD: tmux.h,v 1.1226 2024/08/27 07:49:07 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@ -3434,6 +3434,7 @@ u_int hyperlinks_put(struct hyperlinks *, const char *,
int hyperlinks_get(struct hyperlinks *, u_int,
const char **, const char **, const char **);
struct hyperlinks *hyperlinks_init(void);
struct hyperlinks *hyperlinks_copy(struct hyperlinks *);
void hyperlinks_reset(struct hyperlinks *);
void hyperlinks_free(struct hyperlinks *);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: window-copy.c,v 1.351 2024/08/26 07:09:34 nicm Exp $ */
/* $OpenBSD: window-copy.c,v 1.353 2024/08/27 07:49:07 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@ -450,6 +450,8 @@ window_copy_init(struct window_mode_entry *wme,
data->scroll_exit = args_has(args, 'e');
data->hide_position = args_has(args, 'H');
if (base->hyperlinks != NULL)
data->screen.hyperlinks = hyperlinks_copy(base->hyperlinks);
data->screen.cx = data->cx;
data->screen.cy = data->cy;
data->mx = data->cx;
@ -764,6 +766,18 @@ window_copy_get_line(struct window_pane *wp, u_int y)
return (format_grid_line(gd, gd->hsize + y));
}
static void *
window_copy_cursor_hyperlink_cb(struct format_tree *ft)
{
struct window_pane *wp = format_get_pane(ft);
struct window_mode_entry *wme = TAILQ_FIRST(&wp->modes);
struct window_copy_mode_data *data = wme->data;
struct grid *gd = data->screen.grid;
return (format_grid_hyperlink(gd, data->cx, gd->hsize + data->cy,
&data->screen));
}
static void *
window_copy_cursor_word_cb(struct format_tree *ft)
{
@ -825,10 +839,16 @@ window_copy_formats(struct window_mode_entry *wme, struct format_tree *ft)
}
format_add(ft, "search_present", "%d", data->searchmark != NULL);
if (data->searchcount != -1) {
format_add(ft, "search_count", "%d", data->searchcount);
format_add(ft, "search_count_partial", "%d", data->searchmore);
}
format_add_cb(ft, "search_match", window_copy_search_match_cb);
format_add_cb(ft, "copy_cursor_word", window_copy_cursor_word_cb);
format_add_cb(ft, "copy_cursor_line", window_copy_cursor_line_cb);
format_add_cb(ft, "copy_cursor_hyperlink",
window_copy_cursor_hyperlink_cb);
}
static void
@ -2482,7 +2502,8 @@ window_copy_cmd_refresh_from_pane(struct window_copy_cmd_state *cs)
screen_free(data->backing);
free(data->backing);
data->backing = window_copy_clone_screen(&wp->base, &data->screen, NULL, NULL, wme->swp != wme->wp);
data->backing = window_copy_clone_screen(&wp->base, &data->screen, NULL,
NULL, wme->swp != wme->wp);
window_copy_size_changed(wme);
return (WINDOW_COPY_CMD_REDRAW);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: radiusd_ipcp.c,v 1.13 2024/08/23 01:23:50 jsg Exp $ */
/* $OpenBSD: radiusd_ipcp.c,v 1.14 2024/08/27 06:06:14 florian Exp $ */
/*
* Copyright (c) 2024 Internet Initiative Japan Inc.
@ -447,7 +447,7 @@ ipcp_config_set(void *ctx, const char *name, int argc, char * const * argv)
SYNTAX_ASSERT(argc == 1 || argc == 2,
"specify 1 or 2 addresses for `name-server'");
for (i = 0; i < argc; i++) {
if (inet_aton(argv[i], &ina) != 1) {
if (inet_pton(AF_INET, argv[i], &ina) != 1) {
module_send_message(module->base, IMSG_NG,
"Invalid IP address: %s", argv[i]);
return;
@ -464,7 +464,7 @@ ipcp_config_set(void *ctx, const char *name, int argc, char * const * argv)
SYNTAX_ASSERT(argc == 1 || argc == 2,
"specify 1 or 2 addresses for `name-server'");
for (i = 0; i < argc; i++) {
if (inet_aton(argv[i], &ina) != 1) {
if (inet_pton(AF_INET, argv[i], &ina) != 1) {
module_send_message(module->base, IMSG_NG,
"Invalid IP address: %s", argv[i]);
return;
@ -1735,22 +1735,22 @@ parse_address_range(const char *range)
goto error;
if ((sep = strchr(buf, '-')) != NULL) {
*sep = '\0';
if (inet_aton(buf, &start) != 1)
if (inet_pton(AF_INET, buf, &start) != 1)
goto error;
else if (inet_aton(++sep, &end) != 1)
else if (inet_pton(AF_INET, ++sep, &end) != 1)
goto error;
start.s_addr = ntohl(start.s_addr);
end.s_addr = ntohl(end.s_addr);
} else {
if ((sep = strchr(buf, '/')) != NULL) {
*sep = '\0';
if (inet_aton(buf, &start) != 1)
if (inet_pton(AF_INET, buf, &start) != 1)
goto error;
masklen = strtonum(++sep, 0, 32, &errstr);
if (errstr != NULL)
goto error;
} else {
if (inet_aton(buf, &start) != 1)
if (inet_pton(AF_INET, buf, &start) != 1)
goto error;
masklen = 32;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: yppoll.c,v 1.15 2015/01/16 06:40:22 deraadt Exp $ */
/* $OpenBSD: yppoll.c,v 1.16 2024/08/27 06:03:20 florian Exp $ */
/* $NetBSD: yppoll.c,v 1.5 1996/05/13 02:46:36 thorpej Exp $ */
/*
@ -65,7 +65,7 @@ get_remote_info(char *indomain, char *inmap, char *server, int *outorder,
struct sockaddr_in rsrv_sin;
int rsrv_sock;
CLIENT *client;
struct hostent *h;
struct addrinfo hints, *res;
int r;
bzero((char *)&rsrv_sin, sizeof rsrv_sin);
@ -73,14 +73,15 @@ get_remote_info(char *indomain, char *inmap, char *server, int *outorder,
rsrv_sin.sin_family = AF_INET;
rsrv_sock = RPC_ANYSOCK;
h = gethostbyname(server);
if (h == NULL) {
if (inet_aton(server, &rsrv_sin.sin_addr) == 0) {
fprintf(stderr, "unknown host %s\n", server);
exit(1);
}
} else
rsrv_sin.sin_addr.s_addr = *(u_int32_t *)h->h_addr;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET;
if (getaddrinfo(server, NULL, &hints, &res) != 0) {
fprintf(stderr, "unknown host %s\n", server);
exit(1);
}
rsrv_sin.sin_addr = ((struct sockaddr_in *)res->ai_addr)->sin_addr;
freeaddrinfo(res);
tv.tv_sec = 10;
tv.tv_usec = 0;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ypset.c,v 1.20 2015/01/16 06:40:23 deraadt Exp $ */
/* $OpenBSD: ypset.c,v 1.21 2024/08/27 06:04:03 florian Exp $ */
/* $NetBSD: ypset.c,v 1.8 1996/05/13 02:46:33 thorpej Exp $ */
/*
@ -54,7 +54,7 @@ bind_tohost(struct sockaddr_in *sin, char *dom, char *server)
{
struct ypbind_setdom ypsd;
struct in_addr iaddr;
struct hostent *hp;
struct addrinfo hints, *res;
struct timeval tv;
CLIENT *client;
int sock, port, r;
@ -66,12 +66,14 @@ bind_tohost(struct sockaddr_in *sin, char *dom, char *server)
memset(&ypsd, 0, sizeof ypsd);
if (inet_aton(server, &iaddr) == 0) {
hp = gethostbyname(server);
if (hp == NULL)
errx(1, "can't find address for %s", server);
memmove(&iaddr.s_addr, hp->h_addr, sizeof(iaddr.s_addr));
}
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET;
if (getaddrinfo(server, NULL, &hints, &res) != 0)
errx(1, "can't find address for %s", server);
iaddr = ((struct sockaddr_in *)res->ai_addr)->sin_addr;
freeaddrinfo(res);
ypsd.ypsetdom_domain = dom;
bcopy(&iaddr.s_addr, &ypsd.ypsetdom_binding.ypbind_binding_addr,
sizeof(ypsd.ypsetdom_binding.ypbind_binding_addr));
@ -105,7 +107,7 @@ int
main(int argc, char *argv[])
{
struct sockaddr_in sin;
struct hostent *hent;
struct addrinfo hints, *res;
extern char *optarg;
extern int optind;
char *domainname;
@ -123,13 +125,15 @@ main(int argc, char *argv[])
domainname = optarg;
break;
case 'h':
if (inet_aton(optarg, &sin.sin_addr) == 0) {
hent = gethostbyname(optarg);
if (hent == NULL)
errx(1, "host %s unknown\n", optarg);
bcopy(hent->h_addr, &sin.sin_addr,
sizeof(sin.sin_addr));
}
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET;
if (getaddrinfo(optarg, NULL, &hints, &res) != 0)
errx(1, "host %s unknown\n", optarg);
sin.sin_addr =
((struct sockaddr_in *)res->ai_addr)->sin_addr;
freeaddrinfo(res);
break;
default:
usage();