summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdladm/common/libdlsim.c
diff options
context:
space:
mode:
authorSebastien Roy <Sebastien.Roy@Sun.COM>2009-09-22 22:04:45 -0400
committerSebastien Roy <Sebastien.Roy@Sun.COM>2009-09-22 22:04:45 -0400
commit2b24ab6b3865caeede9eeb9db6b83e1d89dcd1ea (patch)
tree72c0d7d4e1c44843a86bab6e3ed6f82cfa7356af /usr/src/lib/libdladm/common/libdlsim.c
parent51fc88a818087605a0e5f11eddb8b66576f72c23 (diff)
downloadillumos-joyent-2b24ab6b3865caeede9eeb9db6b83e1d89dcd1ea.tar.gz
PSARC 2009/373 Clearview IP Tunneling
PSARC 2009/410 Datalink Administration from Non-Global Zones 6858533 Clearview IP Tunneling 4861777 *snoop* cannot snoop on tunnel interfaces 5010680 M_IOCTL interface between ip and tun is horribly wrong 5029727 tun prints bogus debug messages when receiving multicast packets on 6to4 tunnels 6835873 dlpi_walk() silently fails in an exclusive zone 4152864 must not allow two tunnels to have the same tsrc/tdst pair 6855902 link and flow kstats are too promiscuous 6218826 need to be able to tunnel into a zone 4505468 network interface names can confuse, lie, and deceive 4524756 tun_wproc() takes up too much stack 6417373 tun_wproc_mdata assertion failures 4627970 scalability problems with IP in IP tunnels 4674797 ifparse_ifspec() will not correctly parse ipv6 tunnels 6509231 dladm should show links in exclusive stack zone 4793233 tun driver should include addr in DL_PHYS_ADDR_ACK for non-zero lengths 6795831 ZONE_*_DATALINK syscalls should take datalink_id_t as argument 6791472 mac module doesn't allow MAC addresses < 6 bytes 6618091 Race condition trips ASSERT() in tun.c's SIOCSLIFNAME path 6837580 bogus mi_active check in mac_set_mtu() 6868083 libinetutil: ofmt_open()'s template argument should be const 6870313 libdladm: needless dladm_init_linkprop() in i_dladm_aggr_up() 6872221 panic in dls_devnet_close() if "mtu" property is being set 4289774 Change to the interface-id does not change IPv6 link-local address 6873561 unable to create links with 31 character link names 6874666 changing a link property can accidentally destroy it 6874682 removing a link attribute corrupts the attribute list 6875167 IPCL_ISV6 conn flag is set but never used 6881764 itp reference leak in ipsec_construct_inverse_acquire() 6881951 dladm delete-vlan can no longer delete persistent-only VLANs --HG-- rename : usr/src/uts/common/inet/tun.h => usr/src/uts/common/inet/iptun.h rename : usr/src/uts/common/inet/ip/tun.c => usr/src/uts/common/inet/iptun/iptun.c rename : usr/src/uts/intel/tun/Makefile => usr/src/uts/intel/iptun/Makefile rename : usr/src/uts/sparc/tun/Makefile => usr/src/uts/sparc/iptun/Makefile
Diffstat (limited to 'usr/src/lib/libdladm/common/libdlsim.c')
-rw-r--r--usr/src/lib/libdladm/common/libdlsim.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/usr/src/lib/libdladm/common/libdlsim.c b/usr/src/lib/libdladm/common/libdlsim.c
index 5368db7d0a..a588073bfb 100644
--- a/usr/src/lib/libdladm/common/libdlsim.c
+++ b/usr/src/lib/libdladm/common/libdlsim.c
@@ -138,6 +138,7 @@ i_dladm_get_simnet_info_persist(dladm_handle_t handle,
dladm_conf_t conf;
dladm_status_t status;
char macstr[ETHERADDRL * 3];
+ char simnetpeer[MAXLINKNAMELEN];
uint64_t u64;
boolean_t mac_fixed;
@@ -164,11 +165,13 @@ i_dladm_get_simnet_info_persist(dladm_handle_t handle,
(void) dladm_aggr_str2macaddr(macstr, &mac_fixed, attrp->sna_mac_addr);
/* Peer field is optional and only set when peer is attached */
- if (dladm_get_conf_field(handle, conf, FSIMNETPEER, &u64,
- sizeof (u64)) == DLADM_STATUS_OK)
- attrp->sna_peer_link_id = (datalink_id_t)u64;
- else
+ if (dladm_get_conf_field(handle, conf, FSIMNETPEER, simnetpeer,
+ sizeof (simnetpeer)) == DLADM_STATUS_OK) {
+ status = dladm_name2info(handle, simnetpeer,
+ &attrp->sna_peer_link_id, NULL, NULL, NULL);
+ } else {
attrp->sna_peer_link_id = DATALINK_INVALID_LINKID;
+ }
done:
dladm_destroy_conf(handle, conf);
return (status);
@@ -223,7 +226,7 @@ i_dladm_simnet_update_conf(dladm_handle_t handle, datalink_id_t simnet_id,
{
dladm_status_t status;
dladm_conf_t conf;
- uint64_t u64;
+ char simnetpeer[MAXLINKNAMELEN];
status = dladm_read_conf(handle, simnet_id, &conf);
if (status != DLADM_STATUS_OK)
@@ -232,12 +235,12 @@ i_dladm_simnet_update_conf(dladm_handle_t handle, datalink_id_t simnet_id,
/* First clear previous peer if any in configuration */
(void) dladm_unset_conf_field(handle, conf, FSIMNETPEER);
if (peer_simnet_id != DATALINK_INVALID_LINKID) {
- u64 = peer_simnet_id;
if ((status = dladm_datalink_id2info(handle,
- peer_simnet_id, NULL, NULL, NULL, NULL,
- 0)) == DLADM_STATUS_OK)
+ peer_simnet_id, NULL, NULL, NULL, simnetpeer,
+ sizeof (simnetpeer))) == DLADM_STATUS_OK) {
status = dladm_set_conf_field(handle, conf,
- FSIMNETPEER, DLADM_TYPE_UINT64, &u64);
+ FSIMNETPEER, DLADM_TYPE_STR, simnetpeer);
+ }
if (status != DLADM_STATUS_OK)
goto fail;
}
@@ -357,9 +360,9 @@ dladm_simnet_delete(dladm_handle_t handle, datalink_id_t simnet_id,
}
if (flags & DLADM_OPT_PERSIST) {
+ (void) dladm_remove_conf(handle, simnet_id);
(void) dladm_destroy_datalink_id(handle, simnet_id,
DLADM_OPT_PERSIST);
- (void) dladm_remove_conf(handle, simnet_id);
/* Update any attached peer configuration */
if (prevattr.sna_peer_link_id != DATALINK_INVALID_LINKID)