WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH][Xen API] Add model field to VIF class

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH][Xen API] Add model field to VIF class
From: Jim Fehlig <jfehlig@xxxxxxxxxx>
Date: Tue, 27 Mar 2007 11:13:15 -0600
Delivery-date: Tue, 27 Mar 2007 10:14:01 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.8 (X11/20060911)
Currently there is no way to specify the model of VIF for HVM guests via
Xen API.  This patch introduces a 'model' field to the VIF class.

Regards,
Jim
# HG changeset patch
# User Jim Fehlig <jfehlig@xxxxxxxxxx>
# Date 1175015367 21600
# Node ID 930d5ed35a66a4ed8a3fc27236309a680cb3577d
# Parent  10fcea8f51cd28bd7970efb561da9fba879b151f
Add 'model' field to VIF class, enabling specification of emulated vif model 
via Xen API.

Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxxxx>

diff -r 10fcea8f51cd -r 930d5ed35a66 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Mon Mar 26 14:10:19 2007 +0100
+++ b/docs/xen-api/xenapi-datamodel.tex Tue Mar 27 11:09:27 2007 -0600
@@ -6979,6 +6979,7 @@ Quals & Field & Type & Description \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt network} & network ref & virtual network to 
which this vif is connected \\
 $\mathit{RO}_\mathit{ins}$ &  {\tt VM} & VM ref & virtual machine to which 
this vif is connected \\
 $\mathit{RW}$ &  {\tt MAC} & string & ethernet MAC address of virtual 
interface, as exposed to guest \\
+$\mathit{RW}$ &  {\tt model} & string & emulated model of vif exposed to guest 
e.g. pcnet \\
 $\mathit{RW}$ &  {\tt MTU} & int & MTU in octets \\
 $\mathit{RO}_\mathit{run}$ &  {\tt currently\_attached} & bool & is the device 
currently attached (erased on reboot) \\
 $\mathit{RO}_\mathit{run}$ &  {\tt status\_code} & int & error/success code 
associated with last attach-operation (erased on reboot) \\
@@ -7277,6 +7278,72 @@ Set the MAC field of the given VIF.
 
  \noindent {\bf Signature:} 
 \begin{verbatim} void set_MAC (session_id s, VIF ref self, string 
value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+{\tt string } & value & New value to set \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_model}
+
+{\bf Overview:} 
+Get the model field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} string get_model (session_id s, VIF ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+ 
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt VIF ref } & self & reference to the object \\ \hline 
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:} 
+{\tt 
+string
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_model}
+
+{\bf Overview:} 
+Set the model field of the given VIF.
+
+ \noindent {\bf Signature:} 
+\begin{verbatim} void set_model (session_id s, VIF ref self, string 
value)\end{verbatim}
 
 
 \noindent{\bf Arguments:}
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/libxen/include/xen_vif.h
--- a/tools/libxen/include/xen_vif.h    Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/libxen/include/xen_vif.h    Tue Mar 27 11:09:27 2007 -0600
@@ -71,6 +71,7 @@ typedef struct xen_vif_record
     struct xen_network_record_opt *network;
     struct xen_vm_record_opt *vm;
     char *mac;
+    char *model;
     int64_t mtu;
     bool currently_attached;
     int64_t status_code;
@@ -224,6 +225,13 @@ xen_vif_get_mac(xen_session *session, ch
 
 
 /**
+ * Get the model field of the given VIF.
+ */
+extern bool
+xen_vif_get_model(xen_session *session, char **result, xen_vif vif);
+
+
+/**
  * Get the MTU field of the given VIF.
  */
 extern bool
@@ -291,6 +299,13 @@ xen_vif_set_device(xen_session *session,
  */
 extern bool
 xen_vif_set_mac(xen_session *session, xen_vif vif, char *mac);
+
+
+/**
+ * Set the model field of the given VIF.
+ */
+extern bool
+xen_vif_set_model(xen_session *session, xen_vif vif, char *model);
 
 
 /**
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/libxen/src/xen_vif.c
--- a/tools/libxen/src/xen_vif.c        Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/libxen/src/xen_vif.c        Tue Mar 27 11:09:27 2007 -0600
@@ -55,6 +55,9 @@ static const struct_member xen_vif_recor
         { .key = "MAC",
           .type = &abstract_type_string,
           .offset = offsetof(xen_vif_record, mac) },
+        { .key = "model",
+          .type = &abstract_type_string,
+          .offset = offsetof(xen_vif_record, model) },
         { .key = "MTU",
           .type = &abstract_type_int,
           .offset = offsetof(xen_vif_record, mtu) },
@@ -253,6 +256,23 @@ xen_vif_get_mac(xen_session *session, ch
 
 
 bool
+xen_vif_get_model(xen_session *session, char **result, xen_vif vif)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vif }
+        };
+
+    abstract_type result_type = abstract_type_string;
+
+    *result = NULL;
+    XEN_CALL_("VIF.get_model");
+    return session->ok;
+}
+
+
+bool
 xen_vif_get_mtu(xen_session *session, int64_t *result, xen_vif vif)
 {
     abstract_value param_values[] =
@@ -413,6 +433,22 @@ xen_vif_set_mac(xen_session *session, xe
         };
 
     xen_call_(session, "VIF.set_MAC", param_values, 2, NULL, NULL);
+    return session->ok;
+}
+
+
+bool
+xen_vif_set_model(xen_session *session, xen_vif vif, char *model)
+{
+    abstract_value param_values[] =
+        {
+            { .type = &abstract_type_string,
+              .u.string_val = vif },
+            { .type = &abstract_type_string,
+              .u.string_val = model }
+        };
+
+    xen_call_(session, "VIF.set_model", param_values, 2, NULL, NULL);
     return session->ok;
 }
 
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/python/xen/xend/XendAPI.py
--- a/tools/python/xen/xend/XendAPI.py  Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/python/xen/xend/XendAPI.py  Tue Mar 27 11:09:27 2007 -0600
@@ -1899,6 +1899,7 @@ class XendAPI(object):
                    'network',
                    'VM',
                    'MAC',
+                   'model',
                    'MTU']
 
     VIF_attr_inst = VIF_attr_rw
@@ -1969,6 +1970,9 @@ class XendAPI(object):
     
     def VIF_get_MAC(self, session, vif_ref):
         return self._VIF_get(vif_ref, 'MAC')
+
+    def VIF_get_model(self, session, vif_ref):
+        return self._VIF_get(vif_ref, 'model')
 
     def VIF_get_device(self, session, vif_ref):
         return self._VIF_get(vif_ref, 'device')
diff -r 10fcea8f51cd -r 930d5ed35a66 tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py       Mon Mar 26 14:10:19 2007 +0100
+++ b/tools/python/xen/xend/XendConfig.py       Tue Mar 27 11:09:27 2007 -0600
@@ -1043,6 +1043,8 @@ class XendConfig(dict):
                     dev_info['type'] = cfg_xenapi.get('type')
                 if cfg_xenapi.get('name'):
                     dev_info['name'] = cfg_xenapi.get('name')
+                if cfg_xenapi.get('model'):
+                    dev_info['model'] = cfg_xenapi.get('model')
                 
                 dev_uuid = cfg_xenapi.get('uuid', None)
                 if not dev_uuid:
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH][Xen API] Add model field to VIF class, Jim Fehlig <=