libvirt/src/xenconfig/xen_sxpr.h
Jim Fehlig 1dd34bbb4b xenconfig: support vif bandwidth in sexpr parser and formatter
The xen sexpr config format has long supported specifying vif rate
limiting, e.g.

  (device
    (vif
      (mac '00:16:3e:1b:b1:47')
      (rate '10240KB/s')
      ...
    )
  )

Add support for mapping rate to and from <bandwidth> in the xenconfig
sexpr parser and formatter. rate is mapped to the required 'average'
attribute of the <outbound> element, e.g.

  <interface type='bridge'>
    ...
    <bandwidth>
      <outbound average='10240'/>
    </bandwidth>
  </interface>

Also add unit tests to check the conversion logic.

This patch benefits both the old xen driver and the libxl driver.
Both drivers gain support for vif bandwidth when converting to/from
domXML and xen-sxpr. In addition, the old xen driver will now be
able to handle vif 'rate' setting when communicating with xend.
2016-01-08 18:56:00 -07:00

74 lines
2.6 KiB
C

/*
* xen_sxpr.h: Xen SEXPR parsing functions
*
* Copyright (C) 2006-2008, 2010, 2012 Red Hat, Inc.
* Copyright (C) 2011 Univention GmbH
* Copyright (C) 2005,2006
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*
* Author: Anthony Liguori <aliguori@us.ibm.com>
* Author: Daniel Veillard <veillard@redhat.com>
* Author: Markus Groß <gross@univention.de>
*/
#ifndef __VIR_XEN_SXPR_H__
# define __VIR_XEN_SXPR_H__
# include "internal.h"
# include "virconf.h"
# include "domain_conf.h"
# include "virsexpr.h"
/* helper functions to get the dom id from a sexpr */
int xenGetDomIdFromSxprString(const char *sexpr, int *id);
int xenGetDomIdFromSxpr(const struct sexpr *root, int *id);
virDomainDefPtr xenParseSxprString(const char *sexpr,
char *tty,
int vncport,
virCapsPtr caps,
virDomainXMLOptionPtr xmlopt);
virDomainDefPtr xenParseSxpr(const struct sexpr *root,
const char *cpus,
char *tty,
int vncport,
virCapsPtr caps,
virDomainXMLOptionPtr xmlopt);
int xenParseSxprSound(virDomainDefPtr def, const char *str);
virDomainChrDefPtr xenParseSxprChar(const char *value, const char *tty);
int xenParseSxprVifRate(const char *rate, unsigned long long *kbytes_per_sec);
int xenFormatSxprDisk(virDomainDiskDefPtr def, virBufferPtr buf, int hvm,
int isAttach);
int xenFormatSxprNet(virConnectPtr conn,
virDomainNetDefPtr def, virBufferPtr buf, int hvm,
int isAttach);
int xenFormatSxprOnePCI(virDomainHostdevDefPtr def, virBufferPtr buf,
int detach);
int xenFormatSxprChr(virDomainChrDefPtr def, virBufferPtr buf);
int xenFormatSxprSound(virDomainDefPtr def, virBufferPtr buf);
char * xenFormatSxpr(virConnectPtr conn, virDomainDefPtr def);
#endif /* __VIR_XEN_SXPR_H__ */