mchristi 3c98002
diff -Naurp open-iscsi-2.0-872-rc4-bnx2i.base/iscsiuio/include/config.h open-iscsi-2.0-872-rc4-bnx2i.build2/iscsiuio/include/config.h
mchristi 3c98002
--- open-iscsi-2.0-872-rc4-bnx2i.base/iscsiuio/include/config.h	2011-08-14 22:58:02.000000000 -0500
mchristi 8ae36a9
+++ open-iscsi-2.0-872-rc4-bnx2i.build2/iscsiuio/include/config.h	2011-08-15 00:05:23.000000000 -0500
mchristi a3c1930
@@ -22,6 +22,7 @@
mchristi a3c1930
 
mchristi a3c1930
 #include <netdb.h>
akozumpl 8fac198
 #include "list.h"
akozumpl 8fac198
+#include "iscsi_net_util.h"
akozumpl 8fac198
 
akozumpl 8fac198
 /* ISIDs now have a typed naming authority in them.  We use an OUI */
akozumpl 8fac198
 #define DRIVER_ISID_0  0x00
mchristi 8ae36a9
@@ -31,18 +32,33 @@
mchristi 3c98002
 /* max len of interface */
mchristi 3c98002
 #define ISCSI_MAX_IFACE_LEN	65
mchristi 3c98002
 
mchristi 3c98002
-#if (ISCSID_VERSION == 872) /* 2.0-872 (RHEL 6.0) */
mchristi 8ae36a9
-
mchristi 3c98002
 #define ISCSI_HWADDRESS_BUF_SIZE 18
mchristi 3c98002
 #define ISCSI_TRANSPORT_NAME_MAXLEN 16
mchristi 3c98002
+#define ISCSI_MAX_STR_LEN 80
mchristi 3c98002
 
mchristi 3c98002
 typedef struct iface_rec {
mchristi 3c98002
 	struct list_head	list;
mchristi 3c98002
 	/* iscsi iface record name */
mchristi 3c98002
 	char			name[ISCSI_MAX_IFACE_LEN];
mchristi 3c98002
+	uint32_t		iface_num;
mchristi 3c98002
 	/* network layer iface name (eth0) */
mchristi 3c98002
 	char			netdev[IFNAMSIZ];
mchristi 3c98002
 	char			ipaddress[NI_MAXHOST];
mchristi 3c98002
+	char			subnet_mask[NI_MAXHOST];
mchristi 3c98002
+	char			gateway[NI_MAXHOST];
mchristi 3c98002
+	char			bootproto[ISCSI_MAX_STR_LEN];
mchristi 3c98002
+	char			ipv6_linklocal[NI_MAXHOST];
mchristi 3c98002
+	char			ipv6_router[NI_MAXHOST];
mchristi 3c98002
+	char			ipv6_autocfg[NI_MAXHOST];
mchristi 3c98002
+	char			linklocal_autocfg[NI_MAXHOST];
mchristi 3c98002
+	char			router_autocfg[NI_MAXHOST];
mchristi 3c98002
+	uint16_t		vlan_id;
mchristi 3c98002
+	uint8_t			vlan_priority;
mchristi 3c98002
+	char			vlan_state[ISCSI_MAX_STR_LEN];
mchristi 3c98002
+	char			state[ISCSI_MAX_STR_LEN]; /* 0 = disable,
mchristi 3c98002
+							   * 1 = enable */
mchristi 3c98002
+	uint16_t		mtu;
mchristi 3c98002
+	uint16_t		port;
mchristi 3c98002
 	/*
akozumpl 8fac198
 	 * TODO: we may have to make this bigger and interconnect
akozumpl 8fac198
 	 * specific for infinniband 
mchristi 8ae36a9
@@ -55,40 +71,6 @@ typedef struct iface_rec {
akozumpl 8fac198
 	 */
mchristi 3c98002
 	char			alias[TARGET_NAME_MAXLEN + 1];
mchristi 3c98002
 	char			iname[TARGET_NAME_MAXLEN + 1];
mchristi 3c98002
-
mchristi 3c98002
-	char			vlan[ISCSI_MAX_IFACE_LEN];
mchristi 8ae36a9
-} iface_rec_t;
mchristi 8ae36a9
-
mchristi 8ae36a9
-#else /* 2.0-871 (RHEL 5.5)  */
mchristi 8ae36a9
-/* number of possible connections per session */
mchristi 8ae36a9
-#define ISCSI_CONN_MAX		1
mchristi 8ae36a9
-
mchristi 8ae36a9
-#define ISCSI_TRANSPORT_NAME_MAXLEN 16
mchristi 8ae36a9
-
mchristi 8ae36a9
-typedef struct iface_rec {
mchristi 8ae36a9
-	struct list_head	list;
mchristi 8ae36a9
-	/* iscsi iface record name */
mchristi 8ae36a9
-	char			name[ISCSI_MAX_IFACE_LEN];
mchristi 8ae36a9
-	/* network layer iface name (eth0) */
mchristi 8ae36a9
-	char			netdev[IFNAMSIZ];
mchristi 8ae36a9
-	char			ipaddress[NI_MAXHOST];
mchristi 8ae36a9
-
mchristi 8ae36a9
-	/*
mchristi 8ae36a9
-	 * TODO: we may have to make this bigger and interconnect
mchristi 8ae36a9
-	 * specific for infinniband 
mchristi 8ae36a9
-	 */
mchristi 8ae36a9
-	char			hwaddress[ISCSI_MAX_IFACE_LEN];
mchristi 8ae36a9
-	char			transport_name[ISCSI_TRANSPORT_NAME_MAXLEN];
mchristi 8ae36a9
-	/*
mchristi 8ae36a9
-	 * This is only used for boot now, but the iser guys
mchristi 8ae36a9
-	 * can use this for their virtualization idea.
mchristi 8ae36a9
-	 */
mchristi 8ae36a9
-	char			alias[TARGET_NAME_MAXLEN + 1];
mchristi 8ae36a9
-	char			iname[TARGET_NAME_MAXLEN + 1];
mchristi 8ae36a9
-
mchristi 8ae36a9
-	char			vlan[ISCSI_MAX_IFACE_LEN];
mchristi 3c98002
 } iface_rec_t;
mchristi 3c98002
 
mchristi 8ae36a9
-#endif /* ISCSID_VERSION */
mchristi 8ae36a9
-
mchristi 8ae36a9
 #endif /* CONFIG_H */
mchristi 3c98002
diff -Naurp open-iscsi-2.0-872-rc4-bnx2i.base/iscsiuio/include/iscsi_net_util.h open-iscsi-2.0-872-rc4-bnx2i.build2/iscsiuio/include/iscsi_net_util.h
mchristi 3c98002
--- open-iscsi-2.0-872-rc4-bnx2i.base/iscsiuio/include/iscsi_net_util.h	1969-12-31 18:00:00.000000000 -0600
mchristi 3c98002
+++ open-iscsi-2.0-872-rc4-bnx2i.build2/iscsiuio/include/iscsi_net_util.h	2011-08-14 23:20:09.000000000 -0500
mchristi 3c98002
@@ -0,0 +1,11 @@
akozumpl 8fac198
+#ifndef __ISCSI_NET_UTIL_h__
akozumpl 8fac198
+#define __ISCSI_NET_UTIL_h__
akozumpl 8fac198
+
akozumpl 8fac198
+#define ISCSI_HWADDRESS_BUF_SIZE 18
akozumpl 8fac198
+
akozumpl 8fac198
+extern int net_get_transport_name_from_netdev(char *netdev, char *transport);
akozumpl 8fac198
+extern int net_get_netdev_from_hwaddress(char *hwaddress, char *netdev);
akozumpl 8fac198
+extern int net_setup_netdev(char *netdev, char *local_ip, char *mask,
akozumpl 8fac198
+			    char *gateway, char *remote_ip, int needs_bringup);
akozumpl 8fac198
+
akozumpl 8fac198
+#endif
mchristi 3c98002
diff -Naurp open-iscsi-2.0-872-rc4-bnx2i.base/iscsiuio/src/unix/iscsid_ipc.c open-iscsi-2.0-872-rc4-bnx2i.build2/iscsiuio/src/unix/iscsid_ipc.c
mchristi 3c98002
--- open-iscsi-2.0-872-rc4-bnx2i.base/iscsiuio/src/unix/iscsid_ipc.c	2011-08-14 22:58:02.000000000 -0500
mchristi 3c98002
+++ open-iscsi-2.0-872-rc4-bnx2i.build2/iscsiuio/src/unix/iscsid_ipc.c	2011-08-14 23:37:00.000000000 -0500
mchristi 3c98002
@@ -221,18 +221,11 @@ static int parse_iface(void *arg)
mchristi 3c98002
 	data = (iscsid_uip_broadcast_t *) arg;
mchristi 3c98002
 
mchristi 3c98002
 	LOG_INFO(PFX "Received request for '%s' to set IP address: '%s' "
mchristi 3c98002
-		 "VLAN: '%s'",
mchristi 3c98002
+		 "VLAN: '%d'",
mchristi 3c98002
 		 data->u.iface_rec.rec.netdev,
mchristi 3c98002
-		 data->u.iface_rec.rec.ipaddress, data->u.iface_rec.rec.vlan);
mchristi 3c98002
+		 data->u.iface_rec.rec.ipaddress, data->u.iface_rec.rec.vlan_id);
mchristi 3c98002
 
mchristi 3c98002
-	vlan = atoi(data->u.iface_rec.rec.vlan);
mchristi 3c98002
-	if ((valid_vlan(vlan) == 0) &&
mchristi 3c98002
-	    (strcmp(data->u.iface_rec.rec.vlan, "") != 0)) {
mchristi 3c98002
-		LOG_ERR(PFX "Invalid VLAN tag: '%s'",
mchristi 3c98002
-			data->u.iface_rec.rec.vlan)
mchristi 3c98002
-		    rc = -EIO;
mchristi 3c98002
-		goto early_exit;
mchristi 3c98002
-	}
mchristi 3c98002
+	vlan = data->u.iface_rec.rec.vlan_id;
mchristi 3c98002
 
mchristi 3c98002
 	/*  Detect for CIDR notation and strip off the netmask if present */
mchristi 3c98002
 	rc = decode_cidr(data->u.iface_rec.rec.ipaddress, &ipam, &prefix_len);
mchristi 3c98002
@@ -590,7 +583,7 @@ int process_iscsid_broadcast(int s2)
akozumpl 8fac198
 	}
akozumpl 8fac198
 
akozumpl 8fac198
 	/*  This will be freed by parse_iface_thread() */
akozumpl 8fac198
-	data = (iscsid_uip_broadcast_t *) malloc(sizeof(*data));
akozumpl 8fac198
+	data = (iscsid_uip_broadcast_t *) calloc(1, sizeof(*data));
mchristi 3c98002
 	if (data == NULL) {
akozumpl 8fac198
 		LOG_ERR(PFX "Couldn't allocate memory for iface data");
akozumpl 8fac198
 		return -ENOMEM;