[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/4] slirp: Add mfr-id to -netdev options
From: |
Samuel Thibault |
Subject: |
Re: [PATCH 3/4] slirp: Add mfr-id to -netdev options |
Date: |
Sat, 18 Jun 2022 12:05:08 +0200 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Peter Delevoryas, le mer. 15 juin 2022 18:05:25 -0700, a ecrit:
> This lets you set the manufacturer's ID for a slirp netdev, which can be
> queried from the guest through the Get Version ID NC-SI command. For
> example, by setting the manufacturer's ID to 0x8119:
>
> wget
> https://github.com/facebook/openbmc/releases/download/openbmc-e2294ff5d31d/fby35.mtd
> qemu-system-arm -machine fby35-bmc \
> -drive file=fby35.mtd,format=raw,if=mtd -nographic \
> -netdev user,id=nic,mfr-id=0x8119,hostfwd=::2222-:22 \
> -net nic,model=ftgmac100,netdev=nic
> ...
> username: root
> password: 0penBmc
> ...
> root@bmc-oob:~# ncsi-util 0x15
> NC-SI Command Response:
> cmd: GET_VERSION_ID(0x15)
> Response: COMMAND_COMPLETED(0x0000) Reason: NO_ERROR(0x0000)
> Payload length = 40
>
> 20: 0xf1 0xf0 0xf0 0x00
> 24: 0x00 0x00 0x00 0x00
> 28: 0x00 0x00 0x00 0x00
> 32: 0x00 0x00 0x00 0x00
> 36: 0x00 0x00 0x00 0x00
> 40: 0x00 0x00 0x00 0x00
> 44: 0x00 0x00 0x00 0x00
> 48: 0x00 0x00 0x00 0x00
> 52: 0x00 0x00 0x81 0x19
>
> Signed-off-by: Peter Delevoryas <pdel@fb.com>
> ---
> net/slirp.c | 5 +++--
> qapi/net.json | 5 ++++-
> 2 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/net/slirp.c b/net/slirp.c
> index 75e5ccafd9..231068c1e2 100644
> --- a/net/slirp.c
> +++ b/net/slirp.c
> @@ -413,7 +413,7 @@ static int net_slirp_init(NetClientState *peer, const
> char *model,
> const char *vnameserver, const char *vnameserver6,
> const char *smb_export, const char *vsmbserver,
> const char **dnssearch, const char *vdomainname,
> - const char *tftp_server_name,
> + const char *tftp_server_name, uint32_t mfr_id,
> Error **errp)
> {
> /* default settings according to historic slirp */
> @@ -636,6 +636,7 @@ static int net_slirp_init(NetClientState *peer, const
> char *model,
> cfg.vnameserver6 = ip6_dns;
> cfg.vdnssearch = dnssearch;
> cfg.vdomainname = vdomainname;
> + cfg.mfr_id = mfr_id;
You will need a #if to only include it with slirp 4.8.0 indeed.
Otherwise the mfr_id field won't exist.
In the #else part, it would probably useful to give the user at least a
warning that tells her to upgrade slirp to 4.8.0 to get the mfr_id
functionality working.
> s->slirp = slirp_new(&cfg, &slirp_cb, s);
> QTAILQ_INSERT_TAIL(&slirp_stacks, s, entry);
>
> @@ -1172,7 +1173,7 @@ int net_init_slirp(const Netdev *netdev, const char
> *name,
> user->bootfile, user->dhcpstart,
> user->dns, user->ipv6_dns, user->smb,
> user->smbserver, dnssearch, user->domainname,
> - user->tftp_server_name, errp);
> + user->tftp_server_name, user->mfr_id, errp);
>
> while (slirp_configs) {
> config = slirp_configs;
> diff --git a/qapi/net.json b/qapi/net.json
> index d6f7cfd4d6..efc5cb3fb6 100644
> --- a/qapi/net.json
> +++ b/qapi/net.json
> @@ -167,6 +167,8 @@
> #
> # @tftp-server-name: RFC2132 "TFTP server name" string (Since 3.1)
> #
> +# @mfr-id: Manufacturer ID (Private Enterprise Number: IANA)
> +#
> # Since: 1.2
> ##
> { 'struct': 'NetdevUserOptions',
> @@ -192,7 +194,8 @@
> '*smbserver': 'str',
> '*hostfwd': ['String'],
> '*guestfwd': ['String'],
> - '*tftp-server-name': 'str' } }
> + '*tftp-server-name': 'str',
> + '*mfr-id': 'uint32' } }
>
> ##
> # @NetdevTapOptions:
> --
> 2.30.2
>