{"id":805,"date":"2005-07-24T09:00:00","date_gmt":"2005-07-24T16:00:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=805"},"modified":"2005-07-24T09:00:00","modified_gmt":"2005-07-24T16:00:00","slug":"echando-codigo-%c2%bfcomo-monitorear-a-nfs-usando-java-hablemos-onc-rpc-ii","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2005\/07\/24\/echando-codigo-%c2%bfcomo-monitorear-a-nfs-usando-java-hablemos-onc-rpc-ii\/","title":{"rendered":"Echando c\u00f3digo: \u00bfComo monitorear a NFS usando Java? (hablemos ONC RPC, II)"},"content":{"rendered":"<p><a href=\"http:\/\/www.flickr.com\/photos\/josevnz\/13912376\/\" title=\"Photo Sharing\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/photos14.flickr.com\/13912376_64f86f8319.jpg\" alt=\"Manhattan\" height=\"500\" width=\"375\" \/><br \/>Bueno, vamos a ver ahora como terminar montar el puente <span style=\"font-style: italic;\">MOUNT \/ NFS<\/span> con RPC para monitorear un servidor (las piezas encajan perfectamente)<\/a><\/p>\n<p>Esta es la continuaci\u00f3n <a href=\"http:\/\/elangelnegro.blogspot.com\/2005\/07\/echando-cdigo-como-monitorear-nfs.html\">de el articulo anterior<\/a>. S\u00f3lo que esta vez nuestro cliente va a hacer algo m\u00e1s interesante que s\u00f3lo conectarse al servidor, vamos a obtener el listado de los archivos que est\u00e1n siendo exportados por el servidor de NFS.<\/p>\n<p>S\u00f3lo les voy a mostrar el c\u00f3digo de la aplicaci\u00f3n, no tiene caso ver el c\u00f3digo de los archivos generados con JRPCGEN:<\/p>\n<style type=\"text\/css\"><!-- .syntax0 { color: #000000; } .syntax1 { color: #cc0000; } .syntax2 { color: #ff8400; } .syntax3 { color: #6600cc; } .syntax4 { color: #cc6600; } .syntax5 { color: #ff0000; } .syntax6 { color: #9966ff; } .syntax7 { background: #ffffcc; color: #ff0066; } .syntax8 { color: #006699; font-weight: bold; } .syntax9 { color: #009966; font-weight: bold; } .syntax10 { color: #0099ff; font-weight: bold; } .syntax11 { color: #66ccff; font-weight: bold; } .syntax12 { color: #02b902; } .syntax13 { color: #ff00cc; } .syntax14 { color: #cc00cc; } .syntax15 { color: #9900cc; } .syntax16 { color: #6600cc; } .syntax17 { color: #0000ff; } .syntax18 { color: #000000; font-weight: bold; } .gutter { background: #dbdbdb; color: #000000; } .gutterH { background: #dbdbdb; color: #990066; } --><br \/><\/style>\n<p><\/p>\n<pre><span class=\"gutter\">   1:<\/span><span class=\"syntax9\">package<\/span> com.blogspot.elangelnegro.nfs.app;<br \/><span class=\"gutter\">   2:<\/span><br \/><span class=\"gutter\">   3:<\/span><span class=\"syntax9\">import<\/span> java.net.InetAddress;<br \/><span class=\"gutter\">   4:<\/span><br \/><span class=\"gutterH\">   5:<\/span><span class=\"syntax9\">import<\/span> java.io.IOException;<br \/><span class=\"gutter\">   6:<\/span><br \/><span class=\"gutter\">   7:<\/span><span class=\"syntax9\">import<\/span> org.acplt.oncrpc.OncRpcProgramNotRegisteredException;<br \/><span class=\"gutter\">   8:<\/span><span class=\"syntax9\">import<\/span> org.acplt.oncrpc.OncRpcClientAuthUnix;<br \/><span class=\"gutter\">   9:<\/span><span class=\"syntax9\">import<\/span> org.acplt.oncrpc.OncRpcAuthenticationException;<br \/><span class=\"gutterH\">  10:<\/span><span class=\"syntax9\">import<\/span> org.acplt.oncrpc.OncRpcException;<br \/><span class=\"gutter\">  11:<\/span><span class=\"syntax9\">import<\/span> org.acplt.oncrpc.OncRpcProtocols;<br \/><span class=\"gutter\">  12:<\/span><span class=\"syntax9\">import<\/span> org.acplt.oncrpc.OncRpcAuthStatus;<br \/><span class=\"gutter\">  13:<\/span><br \/><span class=\"gutter\">  14:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.nfs_protClient;<br \/><span class=\"gutterH\">  15:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.mountClient;<br \/><span class=\"gutter\">  16:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.readdirargs;<br \/><span class=\"gutter\">  17:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.readdirres;<br \/><span class=\"gutter\">  18:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.exports;<br \/><span class=\"gutter\">  19:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.exportnode;<br \/><span class=\"gutterH\">  20:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.dirpath;<br \/><span class=\"gutter\">  21:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.fhstatus;<br \/><span class=\"gutter\">  22:<\/span><br \/><span class=\"gutter\">  23:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.nfscookie;<br \/><span class=\"gutter\">  24:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.nfs_prot;<br \/><span class=\"gutterH\">  25:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.nfsstat;<br \/><span class=\"gutter\">  26:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.nfs_fh;<br \/><span class=\"gutter\">  27:<\/span><span class=\"syntax9\">import<\/span> com.blogspot.elangelnegro.nfs.client.entry;<br \/><span class=\"gutter\">  28:<\/span><br \/><span class=\"gutter\">  29:<\/span><span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutterH\">  30:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">This<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">class<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">does<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">read<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">only<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">Ping<\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">against<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">NFS<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">server<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">by<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">getting<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">list<\/span><br \/><span class=\"gutter\">  31:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">files<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">on<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">a<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">given<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">directory<\/span><span class=\"syntax3\">.<\/span><br \/><span class=\"gutter\">  32:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><br \/><span class=\"gutter\">  33:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Blog<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">El<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Angel<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Negro<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">elangelnegro<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">blogspot<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">com<\/span><span class=\"syntax3\">\/<\/span><br \/><span class=\"gutter\">  34:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><br \/><span class=\"gutterH\">  35:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">License<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">GPL<\/span><br \/><span class=\"gutter\">  36:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><br \/><span class=\"gutter\">  37:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Please<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">consult<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">following<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">RFC<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">as<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">they<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">contain<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">usefull<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">information<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">about<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">protocol<\/span><span class=\"syntax3\">:<\/span><br \/><span class=\"gutter\">  38:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">ul<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  39:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">XDR<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">External<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Data<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Representation<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">standard<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">www<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">faqs<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">org<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">rfcs<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">rfc1014<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">html<\/span><br \/><span class=\"gutterH\">  40:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">RPC<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Remote<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Procedure<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Call<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Protocol<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Specification<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Version<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">2<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">www<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">ietf<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">org<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">rfc<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">rfc1831<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">txt<\/span><br \/><span class=\"gutter\">  41:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">NFS<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Network<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">File<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">System<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Protocol<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">specification<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">http<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">www<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">faqs<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">org<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">rfcs<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">rfc1094<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">html<\/span><br \/><span class=\"gutter\">  42:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">ul<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  43:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><br \/><span class=\"gutter\">  44:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@author<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Jose<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Vicente<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Nunez<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Zuleta<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">(<\/span><span class=\"syntax3\">josevnz@users<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">sourceforge<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">net<\/span><span class=\"syntax3\">)<\/span><br \/><span class=\"gutterH\">  45:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@version<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">07<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">17<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">2005<\/span><br \/><span class=\"gutter\">  46:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  47:<\/span><span class=\"syntax8\">public<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">class<\/span> Ping <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  48:<\/span>   <br \/><span class=\"gutter\">  49:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutterH\">  50:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Error<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">exit<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">code<\/span><br \/><span class=\"gutter\">  51:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  52:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">int<\/span> ERROR_EXIT_CODE<span class=\"syntax18\">=<\/span><span class=\"syntax5\">192<\/span>;<br \/><span class=\"gutter\">  53:<\/span>   <br \/><span class=\"gutter\">  54:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutterH\">  55:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">User<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">and<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">group<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">be<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">used<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">when<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">authenticating<\/span><br \/><span class=\"gutter\">  56:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">You<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">can<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">get<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">that<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">information<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">yourself<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">from<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">etc<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">passwd<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">file<\/span><span class=\"syntax3\">:<\/span><br \/><span class=\"gutter\">  57:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">perl<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">F<\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">lane<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">print<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">\"<\/span><span class=\"syntax3\">$<\/span><span class=\"syntax3\">F<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">2<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">$<\/span><span class=\"syntax3\">F<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">3<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\">\"<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">if<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">$<\/span><span class=\"syntax3\">F<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">eq<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">\"<\/span><span class=\"syntax3\">josevnz<\/span><span class=\"syntax3\">\"<\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">etc<\/span><span class=\"syntax3\">\/<\/span><span class=\"syntax3\">passwd<\/span><br \/><span class=\"gutter\">  58:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  59:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">int<\/span> [] USER_AND_GROUP <span class=\"syntax18\">=<\/span> <span class=\"syntax18\">{<\/span><span class=\"syntax5\">500<\/span>, <span class=\"syntax5\">500<\/span><span class=\"syntax18\">}<\/span>;<br \/><span class=\"gutterH\">  60:<\/span>   <br \/><span class=\"gutter\">  61:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">  62:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Constant<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">number<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">dirs<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">'<\/span><span class=\"syntax3\">up<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">count<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">bytes<\/span><span class=\"syntax3\">'<\/span><br \/><span class=\"gutter\">  63:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  64:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">int<\/span> MAX_DIRS <span class=\"syntax18\">=<\/span> <span class=\"syntax5\">10000<\/span>;<br \/><span class=\"gutterH\">  65:<\/span>   <br \/><span class=\"gutter\">  66:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">  67:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Command<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">line<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">argument<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">processing<\/span><br \/><span class=\"gutter\">  68:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">hostname<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">check<\/span><span class=\"syntax3\">.<\/span><br \/><span class=\"gutter\">  69:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@throws<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Exception<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">If<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">any<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">error<\/span><span class=\"syntax3\">.<\/span><br \/><span class=\"gutterH\">  70:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@since<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">.<\/span><span class=\"syntax3\">1<\/span><br \/><span class=\"gutter\">  71:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  72:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">main<\/span>(String [] args) <span class=\"syntax8\">throws<\/span> Exception <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  73:<\/span>                nfs_protClient nfs <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  74:<\/span>                mountClient mount <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutterH\">  75:<\/span>                readdirres dirResult <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  76:<\/span>                readdirargs dirArgs <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  77:<\/span>                exports exportsList <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  78:<\/span>                fhstatus fhStatus <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  79:<\/span>                <span class=\"syntax10\">boolean<\/span> hasDir <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">false<\/span>;<br \/><span class=\"gutterH\">  80:<\/span>                OncRpcClientAuthUnix authUnix <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\">  81:<\/span>                <span class=\"syntax8\">if<\/span> ( <span class=\"syntax18\">!<\/span> ( (args <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">&<\/span><span class=\"syntax18\">&amp;<\/span> (args.length <span class=\"syntax18\">=<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax5\">2<\/span>) <span class=\"syntax18\">&<\/span><span class=\"syntax18\">&amp;<\/span> (args[<span class=\"syntax5\">0<\/span>] <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">&<\/span><span class=\"syntax18\">&amp;<\/span> (args[<span class=\"syntax5\">1<\/span>] <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>)) ) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  82:<\/span>                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IllegalArgumentException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Please<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">specify<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NFS<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">server<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">host<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\/<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">directory<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">to<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">check!<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  83:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  84:<\/span>                <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\">  85:<\/span>                        authUnix <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">OncRpcClientAuthUnix<\/span>(args[<span class=\"syntax5\">1<\/span>], USER_AND_GROUP[<span class=\"syntax5\">0<\/span>], USER_AND_GROUP[<span class=\"syntax5\">1<\/span>]);<br \/><span class=\"gutter\">  86:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Get<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">some<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">information<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">with<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">mount<\/span><br \/><span class=\"gutter\">  87:<\/span>                        mount <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">mountClient<\/span>(InetAddress.<span class=\"syntax6\">getByName<\/span>(args[<span class=\"syntax5\">0<\/span>]), OncRpcProtocols.ONCRPC_TCP);<br \/><span class=\"gutter\">  88:<\/span>                        System.out.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Connected<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">with<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">Mountd<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\">  89:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Get<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">list<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">of<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">exported<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">directories<\/span><br \/><span class=\"gutterH\">  90:<\/span>                        exportsList <span class=\"syntax18\">=<\/span> mount.<span class=\"syntax6\">MOUNTPROC_EXPORT_1<\/span>();<br \/><span class=\"gutter\">  91:<\/span>                        exportnode node <span class=\"syntax18\">=<\/span> exportsList.value;<br \/><span class=\"gutter\">  92:<\/span>                        <span class=\"syntax8\">while<\/span> (node <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  93:<\/span>                                System.out.<span class=\"syntax6\">println<\/span>(<br \/><span class=\"gutter\">  94:<\/span>                                                <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Exported<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">filesystem:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutterH\">  95:<\/span>                                                node.ex_dir.value<br \/><span class=\"gutter\">  96:<\/span>                                );<br \/><span class=\"gutter\">  97:<\/span>                                <span class=\"syntax8\">if<\/span> (node.ex_dir.value.<span class=\"syntax6\">equals<\/span>(args[<span class=\"syntax5\">1<\/span>])) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  98:<\/span>                                        hasDir <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">true<\/span>;<br \/><span class=\"gutter\">  99:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\"> 100:<\/span>                                node <span class=\"syntax18\">=<\/span> node.ex_next.value;<br \/><span class=\"gutter\"> 101:<\/span>                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 102:<\/span>                   <br \/><span class=\"gutter\"> 103:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Do<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">remote<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">NFS<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">server<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">has<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">directory<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">we<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">are<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">looking<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">for?<\/span><br \/><span class=\"gutter\"> 104:<\/span>                        <span class=\"syntax8\">if<\/span> (hasDir) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\"> 105:<\/span>                           <br \/><span class=\"gutter\"> 106:<\/span>                                mount.<span class=\"syntax6\">getClient<\/span>().<span class=\"syntax6\">setAuth<\/span>(authUnix);<br \/><span class=\"gutter\"> 107:<\/span>                                fhStatus <span class=\"syntax18\">=<\/span> mount.<span class=\"syntax6\">MOUNTPROC_MNT_1<\/span>(<span class=\"syntax8\">new<\/span> <span class=\"syntax6\">dirpath<\/span>(args[<span class=\"syntax5\">1<\/span>]));<br \/><span class=\"gutter\"> 108:<\/span>                                <span class=\"syntax8\">if<\/span> (fhStatus.fhs_status <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 109:<\/span>                                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IOException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">There<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">was<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">a<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">problem<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">mounting<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">directory:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">'<\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span> args[<span class=\"syntax5\">1<\/span>] <span class=\"syntax18\">+<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">',<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">reason:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span> <span class=\"syntax6\">getNFSCodeReason<\/span>(fhStatus.fhs_status));<br \/><span class=\"gutterH\"> 110:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 111:<\/span>                                nfs <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">nfs_protClient<\/span>(InetAddress.<span class=\"syntax6\">getByName<\/span>(args[<span class=\"syntax5\">0<\/span>]), OncRpcProtocols.ONCRPC_TCP);<br \/><span class=\"gutter\"> 112:<\/span>                                nfs.<span class=\"syntax6\">getClient<\/span>().<span class=\"syntax6\">setAuth<\/span>(authUnix);<br \/><span class=\"gutter\"> 113:<\/span>                                System.out.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Connected<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">with<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NFSD<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 114:<\/span>                    <br \/><span class=\"gutterH\"> 115:<\/span>                                <span class=\"syntax1\">\/*<\/span><br \/><span class=\"gutter\"> 116:<\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">*<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">Try<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">to<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">get<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">the<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">directory<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">listing.<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">Up<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">to<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">here<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">all<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">has<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">been<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">generic.<\/span><br \/><span class=\"gutter\"> 117:<\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">*<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">The<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">RFC<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">1094<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">describes<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">which<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">methods<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">can<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">be<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">called<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">for<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">a<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">NFS<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">server.<\/span><br \/><span class=\"gutter\"> 118:<\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">*<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\"> <\/span><br \/><span class=\"gutter\"> 119:<\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\">        <\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">*\/<\/span><br \/><span class=\"gutterH\"> 120:<\/span>                                dirArgs <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">readdirargs<\/span>();<br \/><span class=\"gutter\"> 121:<\/span>                                dirArgs.count <span class=\"syntax18\">=<\/span> MAX_DIRS;<br \/><span class=\"gutter\"> 122:<\/span>                                <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Create<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">an<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">empty<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">'zero'<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">NFS<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">cookie,<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">first<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">time<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">read<\/span><br \/><span class=\"gutter\"> 123:<\/span>                                <span class=\"syntax10\">byte<\/span> [] zeroCookie <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax10\">byte<\/span>[nfs_prot.NFS_COOKIESIZE];<br \/><span class=\"gutter\"> 124:<\/span>                                <span class=\"syntax8\">for<\/span> (<span class=\"syntax10\">int<\/span> i <span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>; i <span class=\"syntax18\">&lt;<\/span> nfs_prot.NFS_COOKIESIZE; i<span class=\"syntax18\">+<\/span><span class=\"syntax18\">+<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\"> 125:<\/span>                                        zeroCookie[i] <span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>;<br \/><span class=\"gutter\"> 126:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 127:<\/span>                                nfscookie cookie <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">nfscookie<\/span>(zeroCookie);                      <br \/><span class=\"gutter\"> 128:<\/span>                                dirArgs.cookie <span class=\"syntax18\">=<\/span> cookie;<br \/><span class=\"gutter\"> 129:<\/span>                           <br \/><span class=\"gutterH\"> 130:<\/span>                                <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Use<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">information<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">obtained<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">for<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">previous<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">NFS<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">file<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">handle<\/span><br \/><span class=\"gutter\"> 131:<\/span>                                nfs_fh nfsFh <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">nfs_fh<\/span>();<br \/><span class=\"gutter\"> 132:<\/span>                                nfsFh.data <span class=\"syntax18\">=<\/span> fhStatus.fhs_fhandle.value;<br \/><span class=\"gutter\"> 133:<\/span>                                dirArgs.dir <span class=\"syntax18\">=<\/span> nfsFh;<br \/><span class=\"gutter\"> 134:<\/span>                                dirResult <span class=\"syntax18\">=<\/span> nfs.<span class=\"syntax6\">NFSPROC_READDIR_2<\/span>(dirArgs);<br \/><span class=\"gutterH\"> 135:<\/span>                                <span class=\"syntax8\">if<\/span> (dirResult.status <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax5\">0<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 136:<\/span>                                        <span class=\"syntax8\">throw<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">IOException<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Got<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">an<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">error<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">from<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">the<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NFS<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">server:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span> <span class=\"syntax6\">getNFSCodeReason<\/span>(dirResult.status));<br \/><span class=\"gutter\"> 137:<\/span>                                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 138:<\/span>                                entry currEntry <span class=\"syntax18\">=<\/span> dirResult.reply.entries;<br \/><span class=\"gutter\"> 139:<\/span>                                System.out.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Current<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">directory<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">entries:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutterH\"> 140:<\/span>                                <span class=\"syntax8\">while<\/span>(currEntry <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 141:<\/span>                                                System.out.<span class=\"syntax6\">println<\/span>(currEntry.name.value);<br \/><span class=\"gutter\"> 142:<\/span>                                                currEntry <span class=\"syntax18\">=<\/span> currEntry.nextentry;<br \/><span class=\"gutter\"> 143:<\/span>                                <span class=\"syntax18\">}<\/span>                   <br \/><span class=\"gutter\"> 144:<\/span>                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\"> 145:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (OncRpcAuthenticationException exp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 146:<\/span>                        <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Get<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">a<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">better<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">explanation<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">why<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">the<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">auth<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">failed<\/span><br \/><span class=\"gutter\"> 147:<\/span>                        <span class=\"syntax8\">switch<\/span> (exp.<span class=\"syntax6\">getReason<\/span>()) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 148:<\/span>                        <span class=\"syntax8\">case<\/span> OncRpcAuthStatus.ONCRPC_AUTH_BADCRED:<br \/><span class=\"gutter\"> 149:<\/span>                                System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Bad<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">credential<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">(seal<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">broken)<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutterH\"> 150:<\/span>                                <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 151:<\/span>                        <span class=\"syntax8\">case<\/span> OncRpcAuthStatus.ONCRPC_AUTH_BADVERF:<br \/><span class=\"gutter\"> 152:<\/span>                                System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Bad<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">verifier<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">(seal<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">broken)<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 153:<\/span>                                <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 154:<\/span>                        <span class=\"syntax8\">case<\/span> OncRpcAuthStatus.ONCRPC_AUTH_FAILED:<br \/><span class=\"gutterH\"> 155:<\/span>                                System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Reason<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">unknown<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 156:<\/span>                                <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 157:<\/span>                        <span class=\"syntax8\">case<\/span> OncRpcAuthStatus.ONCRPC_AUTH_INVALIDRESP:<br \/><span class=\"gutter\"> 158:<\/span>                                System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Bogus<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">response<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">verifier<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 159:<\/span>                                <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutterH\"> 160:<\/span>                        <span class=\"syntax8\">case<\/span> OncRpcAuthStatus.ONCRPC_AUTH_REJECTEDCRED:<br \/><span class=\"gutter\"> 161:<\/span>                                System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Client<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">must<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">begin<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">new<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">session<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 162:<\/span>                                <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 163:<\/span>                        <span class=\"syntax8\">case<\/span> OncRpcAuthStatus.ONCRPC_AUTH_REJECTEDVERF:<br \/><span class=\"gutter\"> 164:<\/span>                                System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Verifier<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">expired<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">or<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">replayed<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutterH\"> 165:<\/span>                                <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 166:<\/span>                        <span class=\"syntax8\">case<\/span> OncRpcAuthStatus.ONCRPC_AUTH_TOOWEAK:<br \/><span class=\"gutter\"> 167:<\/span>                                System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Rejected<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">for<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">security<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">reasons<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 168:<\/span>                                <span class=\"syntax8\">break<\/span>;                     <br \/><span class=\"gutter\"> 169:<\/span>                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\"> 170:<\/span>                        <span class=\"syntax8\">throw<\/span> exp;<br \/><span class=\"gutter\"> 171:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (OncRpcProgramNotRegisteredException exp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 172:<\/span>                     System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">ONC\/RPC<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">program<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">server<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">not<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">found<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 173:<\/span>                     <span class=\"syntax8\">throw<\/span> exp;<br \/><span class=\"gutter\"> 174:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (OncRpcException exp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\"> 175:<\/span>                     System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Could<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">not<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">contact<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">portmapper:<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutter\"> 176:<\/span>                     exp.<span class=\"syntax6\">printStackTrace<\/span>(System.err);<br \/><span class=\"gutter\"> 177:<\/span>                         <span class=\"syntax8\">throw<\/span> exp;<br \/><span class=\"gutter\"> 178:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (IOException exp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 179:<\/span>                     System.err.<span class=\"syntax6\">println<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">Could<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">not<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">contact<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">portmapper:<\/span><span class=\"syntax13\">\"<\/span>);<br \/><span class=\"gutterH\"> 180:<\/span>                     exp.<span class=\"syntax6\">printStackTrace<\/span>(System.err);<br \/><span class=\"gutter\"> 181:<\/span>                         <span class=\"syntax8\">throw<\/span> exp;<br \/><span class=\"gutter\"> 182:<\/span>                <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">finally<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 183:<\/span>                        <span class=\"syntax8\">if<\/span> (mount <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 184:<\/span>                                 <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\"> 185:<\/span>                                         <span class=\"syntax8\">if<\/span> (hasDir) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 186:<\/span>                                                 <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 187:<\/span>                                                         mount.<span class=\"syntax6\">MOUNTPROC_UMNTALL_1<\/span>();<br \/><span class=\"gutter\"> 188:<\/span>                                                 <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (Exception ignoreInner) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 189:<\/span>                                                         <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Ignore<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">any<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">exceptions<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">here<\/span><br \/><span class=\"gutterH\"> 190:<\/span>                                                 <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 191:<\/span>                                         <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 192:<\/span>                                         mount.<span class=\"syntax6\">close<\/span>();                             <br \/><span class=\"gutter\"> 193:<\/span>                                 <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (Exception ignore) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 194:<\/span>                                         <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Do<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">nothing<\/span><br \/><span class=\"gutterH\"> 195:<\/span>                                 <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 196:<\/span>                         <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 197:<\/span>                         <span class=\"syntax8\">if<\/span> (nfs <span class=\"syntax18\">!<\/span><span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 198:<\/span>                                 <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 199:<\/span>                                         nfs.<span class=\"syntax6\">close<\/span>();                               <br \/><span class=\"gutterH\"> 200:<\/span>                                 <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (Exception ignore) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 201:<\/span>                                         <span class=\"syntax2\">\/\/<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">Do<\/span><span class=\"syntax2\"> <\/span><span class=\"syntax2\">nothing<\/span><br \/><span class=\"gutter\"> 202:<\/span>                                 <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 203:<\/span>                         <span class=\"syntax18\">}<\/span>  <br \/><span class=\"gutter\"> 204:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\"> 205:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 206:<\/span>   <br \/><span class=\"gutter\"> 207:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\"> 208:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Map<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">NFS<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">return<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">code<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">messages<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">in<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">English<\/span><br \/><span class=\"gutter\"> 209:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">theCode<\/span><br \/><span class=\"gutterH\"> 210:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@return<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Translated<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">String<\/span><br \/><span class=\"gutter\"> 211:<\/span><span class=\"syntax3\">        <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\"> 212:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax8\">static<\/span> String <span class=\"syntax6\">getNFSCodeReason<\/span>(<span class=\"syntax10\">int<\/span> theCode) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\"> 213:<\/span>                String reason <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutter\"> 214:<\/span>                <span class=\"syntax8\">switch<\/span> (theCode) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\"> 215:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFS_OK:<br \/><span class=\"gutter\"> 216:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFS<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">OK<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 217:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_PERM:<br \/><span class=\"gutter\"> 218:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">PERM<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 219:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_NOENT:<br \/><span class=\"gutterH\"> 220:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NOENT<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 221:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_IO:<br \/><span class=\"gutter\"> 222:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">IO<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 223:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_NXIO:<br \/><span class=\"gutter\"> 224:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NXIO<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutterH\"> 225:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_ACCES:<br \/><span class=\"gutter\"> 226:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">ACCES<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 227:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_EXIST:<br \/><span class=\"gutter\"> 228:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">EXIST<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 229:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_NODEV:<br \/><span class=\"gutterH\"> 230:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NODEV<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 231:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_NOTDIR:<br \/><span class=\"gutter\"> 232:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NOTDIR<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 233:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_ISDIR:<br \/><span class=\"gutter\"> 234:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">ISDIR<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutterH\"> 235:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_FBIG:<br \/><span class=\"gutter\"> 236:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">FBIG<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 237:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_NOSPC:<br \/><span class=\"gutter\"> 238:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NOSPC<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 239:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_ROFS:<br \/><span class=\"gutterH\"> 240:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">ROFS<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 241:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_NAMETOOLONG:<br \/><span class=\"gutter\"> 242:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NAMETOOLONG<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 243:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_NOTEMPTY:<br \/><span class=\"gutter\"> 244:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">NOTEMPTY<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutterH\"> 245:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_DQUOT:<br \/><span class=\"gutter\"> 246:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">DQUOT<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 247:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_STALE:<br \/><span class=\"gutter\"> 248:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">STALE<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 249:<\/span>                <span class=\"syntax8\">case<\/span> nfsstat.NFSERR_WFLUSH:<br \/><span class=\"gutterH\"> 250:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">NFSERR<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">WFLUSH<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 251:<\/span>                <span class=\"syntax8\">default<\/span>:<br \/><span class=\"gutter\"> 252:<\/span>                        reason <span class=\"syntax18\">=<\/span> <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">UNKNOWN<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">CODE<\/span><span class=\"syntax13\">\"<\/span>; <span class=\"syntax8\">break<\/span>;<br \/><span class=\"gutter\"> 253:<\/span>                <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 254:<\/span>                <span class=\"syntax8\">return<\/span> reason;<br \/><span class=\"gutterH\"> 255:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\"> 256:<\/span><span class=\"syntax18\">}<\/span><br \/><\/pre>\n<p>La salida de nuestro programa es la siguiente:<\/p>\n<blockquote><p>Connected with Mountd<br \/>Exported filesystem: \/usr\/local\/src<br \/>Connected with NFSD<br \/>Current directory entries:<br \/><span style=\"color: rgb(0, 153, 0);\">linux-wlan-ng-0.2.1-pre26<\/span><br \/><span style=\"color: rgb(0, 153, 0);\">..<\/span><br \/><span style=\"color: rgb(0, 153, 0);\">WAG54GV2<\/span><br \/><span style=\"color: rgb(0, 153, 0);\">.<\/span><\/p><\/blockquote>\n<p>Debo admitir que lo \u00fanico que no me gust\u00f3 de las librer\u00edas es la cantidad tan grande de objetos intermedios que hay que crear; Por otro lado no me tom\u00f3 mucho darme una idea de que metodos llamar y como hacerlo, gracias a lo intuitivo de las clases y el contenido de los RFC.<\/p>\n<p>Ahora piense en las posibilidades de monitoreo utilizando Java y RPC:<\/p>\n<ul>\n<li>NIS<\/li>\n<li>Espacio en disco, interfaces de redes, carga de el CPU<\/li>\n<li>NFS (Ya vimos algo de eso)<\/li>\n<li>Y cualquier otro servicio en su m\u00e1quina que hable RPC<\/li>\n<\/ul>\n<p> Los dejo <a href=\"http:\/\/sourceforge.net\/project\/showfiles.php?group_id=128692&#038;package_id=140951&amp;release_id=344355\">con un enlace al c\u00f3digo fuente<\/a>, binarios y las librer\u00edas de Remote Tea. Bajeselo, compilelo y juegue con \u00e9l. Y sobre todo,<span style=\"font-style: italic;\"> opine<\/span>, quizas todos podamos sacar algo interesante de todo esto.<\/p>\n<p><i>Etiquetas en Technorrati:<\/i> <a href=\"http:\/\/technorati.com\/tag\/nfs\" rel=\"tag\">nfs<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bueno, vamos a ver ahora como terminar montar el puente MOUNT \/ NFS con RPC para monitorear un servidor (las piezas encajan perfectamente) Esta es la continuaci\u00f3n de el articulo anterior. S\u00f3lo que esta vez nuestro cliente va a hacer algo m\u00e1s interesante que s\u00f3lo conectarse al servidor, vamos a obtener el listado de los <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2005\/07\/24\/echando-codigo-%c2%bfcomo-monitorear-a-nfs-usando-java-hablemos-onc-rpc-ii\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/805"}],"collection":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/comments?post=805"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/805\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=805"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}