newuuid-20070612
[openafs.git] / src / afs / afs_pioctl.c
index 133bded..3ddb35a 100644 (file)
@@ -92,6 +92,7 @@ DECL_PIOCTL(PResidencyCmd);
 DECL_PIOCTL(PCallBackAddr);
 DECL_PIOCTL(PDiscon);
 DECL_PIOCTL(PNFSNukeCreds);
+DECL_PIOCTL(PNewUuid);
 
 /*
  * A macro that says whether we're going to need HandleClientContext().
@@ -196,6 +197,10 @@ static int (*(CpioctlSw[])) () = {
        PCallBackAddr,          /* 3 -- request addr for callback rxcon */
        PBogus,                 /* 4 */
        PDiscon,                /* 5 -- get/set discon mode */
+        PBogus,                 /* 6 */
+        PBogus,                 /* 7 */
+        PBogus,                 /* 8 */
+        PNewUUID,               /* 9 */
 };
 
 static int (*(OpioctlSw[])) () = {
@@ -3812,6 +3817,21 @@ DECL_PIOCTL(PResidencyCmd)
     return code;
 }
 
+DECL_PIOCTL(PNewUuid)
+{
+    /*AFS_STATCNT(PNewUuid); */
+    if (!afs_resourceinit_flag)        /* afs deamons havn't started yet */
+       return EIO;             /* Inappropriate ioctl for device */
+
+    if (!afs_osi_suser(acred))
+       return EACCES;
+
+    ObtainWriteLock(&afs_xinterface, 555);
+    afs_uuid_create(&afs_cb_interface.uuid);
+    ReleaseWriteLock(&afs_xinterface);
+    ForceAllNewConnections();
+}
+
 DECL_PIOCTL(PCallBackAddr)
 {
 #ifndef UKERNEL