Search in sources :

Example 1 with RpcCall

use of org.apache.hadoop.oncrpc.RpcCall in project hadoop by apache.

the class PortmapRequest method create.

public static XDR create(PortmapMapping mapping, boolean set) {
    XDR request = new XDR();
    int procedure = set ? RpcProgramPortmap.PMAPPROC_SET : RpcProgramPortmap.PMAPPROC_UNSET;
    RpcCall call = RpcCall.getInstance(RpcUtil.getNewXid(String.valueOf(RpcProgramPortmap.PROGRAM)), RpcProgramPortmap.PROGRAM, RpcProgramPortmap.VERSION, procedure, new CredentialsNone(), new VerifierNone());
    call.write(request);
    return mapping.serialize(request);
}
Also used : RpcCall(org.apache.hadoop.oncrpc.RpcCall) XDR(org.apache.hadoop.oncrpc.XDR) VerifierNone(org.apache.hadoop.oncrpc.security.VerifierNone) CredentialsNone(org.apache.hadoop.oncrpc.security.CredentialsNone)

Example 2 with RpcCall

use of org.apache.hadoop.oncrpc.RpcCall in project hadoop by apache.

the class RpcProgramMountd method handleInternal.

@Override
public void handleInternal(ChannelHandlerContext ctx, RpcInfo info) {
    RpcCall rpcCall = (RpcCall) info.header();
    final MNTPROC mntproc = MNTPROC.fromValue(rpcCall.getProcedure());
    int xid = rpcCall.getXid();
    byte[] data = new byte[info.data().readableBytes()];
    info.data().readBytes(data);
    XDR xdr = new XDR(data);
    XDR out = new XDR();
    InetAddress client = ((InetSocketAddress) info.remoteAddress()).getAddress();
    if (mntproc == MNTPROC.NULL) {
        out = nullOp(out, xid, client);
    } else if (mntproc == MNTPROC.MNT) {
        // Only do port monitoring for MNT
        if (!doPortMonitoring(info.remoteAddress())) {
            out = MountResponse.writeMNTResponse(Nfs3Status.NFS3ERR_ACCES, out, xid, null);
        } else {
            out = mnt(xdr, out, xid, client);
        }
    } else if (mntproc == MNTPROC.DUMP) {
        out = dump(out, xid, client);
    } else if (mntproc == MNTPROC.UMNT) {
        out = umnt(xdr, out, xid, client);
    } else if (mntproc == MNTPROC.UMNTALL) {
        umntall(out, xid, client);
    } else if (mntproc == MNTPROC.EXPORT) {
        // Currently only support one NFS export
        List<NfsExports> hostsMatchers = new ArrayList<NfsExports>();
        if (hostsMatcher != null) {
            hostsMatchers.add(hostsMatcher);
            out = MountResponse.writeExportList(out, xid, exports, hostsMatchers);
        } else {
            // This means there are no valid exports provided.
            RpcAcceptedReply.getInstance(xid, RpcAcceptedReply.AcceptState.PROC_UNAVAIL, new VerifierNone()).write(out);
        }
    } else {
        // Invalid procedure
        RpcAcceptedReply.getInstance(xid, RpcAcceptedReply.AcceptState.PROC_UNAVAIL, new VerifierNone()).write(out);
    }
    ChannelBuffer buf = ChannelBuffers.wrappedBuffer(out.asReadOnlyWrap().buffer());
    RpcResponse rsp = new RpcResponse(buf, info.remoteAddress());
    RpcUtil.sendRpcResponse(ctx, rsp);
}
Also used : InetSocketAddress(java.net.InetSocketAddress) XDR(org.apache.hadoop.oncrpc.XDR) RpcResponse(org.apache.hadoop.oncrpc.RpcResponse) ChannelBuffer(org.jboss.netty.buffer.ChannelBuffer) RpcCall(org.apache.hadoop.oncrpc.RpcCall) VerifierNone(org.apache.hadoop.oncrpc.security.VerifierNone) NfsExports(org.apache.hadoop.nfs.NfsExports) ArrayList(java.util.ArrayList) List(java.util.List) InetAddress(java.net.InetAddress)

Example 3 with RpcCall

use of org.apache.hadoop.oncrpc.RpcCall in project hadoop by apache.

the class RpcProgramNfs3 method commit.

@Override
public COMMIT3Response commit(XDR xdr, RpcInfo info) {
    SecurityHandler securityHandler = getSecurityHandler(info);
    RpcCall rpcCall = (RpcCall) info.header();
    int xid = rpcCall.getXid();
    SocketAddress remoteAddress = info.remoteAddress();
    return commit(xdr, info.channel(), xid, securityHandler, remoteAddress);
}
Also used : SecurityHandler(org.apache.hadoop.oncrpc.security.SecurityHandler) SysSecurityHandler(org.apache.hadoop.oncrpc.security.SysSecurityHandler) RpcCall(org.apache.hadoop.oncrpc.RpcCall) SocketAddress(java.net.SocketAddress) InetSocketAddress(java.net.InetSocketAddress)

Example 4 with RpcCall

use of org.apache.hadoop.oncrpc.RpcCall in project hadoop by apache.

the class RpcProgramPortmap method messageReceived.

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
    RpcInfo info = (RpcInfo) e.getMessage();
    RpcCall rpcCall = (RpcCall) info.header();
    final int portmapProc = rpcCall.getProcedure();
    int xid = rpcCall.getXid();
    XDR in = new XDR(info.data().toByteBuffer().asReadOnlyBuffer(), XDR.State.READING);
    XDR out = new XDR();
    if (portmapProc == PMAPPROC_NULL) {
        out = nullOp(xid, in, out);
    } else if (portmapProc == PMAPPROC_SET) {
        out = set(xid, in, out);
    } else if (portmapProc == PMAPPROC_UNSET) {
        out = unset(xid, in, out);
    } else if (portmapProc == PMAPPROC_DUMP) {
        out = dump(xid, in, out);
    } else if (portmapProc == PMAPPROC_GETPORT) {
        out = getport(xid, in, out);
    } else if (portmapProc == PMAPPROC_GETVERSADDR) {
        out = getport(xid, in, out);
    } else {
        LOG.info("PortmapHandler unknown rpc procedure=" + portmapProc);
        RpcAcceptedReply reply = RpcAcceptedReply.getInstance(xid, RpcAcceptedReply.AcceptState.PROC_UNAVAIL, new VerifierNone());
        reply.write(out);
    }
    ChannelBuffer buf = ChannelBuffers.wrappedBuffer(out.asReadOnlyWrap().buffer());
    RpcResponse rsp = new RpcResponse(buf, info.remoteAddress());
    RpcUtil.sendRpcResponse(ctx, rsp);
}
Also used : RpcInfo(org.apache.hadoop.oncrpc.RpcInfo) RpcCall(org.apache.hadoop.oncrpc.RpcCall) XDR(org.apache.hadoop.oncrpc.XDR) VerifierNone(org.apache.hadoop.oncrpc.security.VerifierNone) RpcAcceptedReply(org.apache.hadoop.oncrpc.RpcAcceptedReply) RpcResponse(org.apache.hadoop.oncrpc.RpcResponse) ChannelBuffer(org.jboss.netty.buffer.ChannelBuffer)

Example 5 with RpcCall

use of org.apache.hadoop.oncrpc.RpcCall in project hadoop by apache.

the class RpcProgramNfs3 method write.

@Override
public WRITE3Response write(XDR xdr, RpcInfo info) {
    SecurityHandler securityHandler = getSecurityHandler(info);
    RpcCall rpcCall = (RpcCall) info.header();
    int xid = rpcCall.getXid();
    SocketAddress remoteAddress = info.remoteAddress();
    return write(xdr, info.channel(), xid, securityHandler, remoteAddress);
}
Also used : SecurityHandler(org.apache.hadoop.oncrpc.security.SecurityHandler) SysSecurityHandler(org.apache.hadoop.oncrpc.security.SysSecurityHandler) RpcCall(org.apache.hadoop.oncrpc.RpcCall) SocketAddress(java.net.SocketAddress) InetSocketAddress(java.net.InetSocketAddress)

Aggregations

RpcCall (org.apache.hadoop.oncrpc.RpcCall)6 InetSocketAddress (java.net.InetSocketAddress)4 XDR (org.apache.hadoop.oncrpc.XDR)4 VerifierNone (org.apache.hadoop.oncrpc.security.VerifierNone)4 RpcResponse (org.apache.hadoop.oncrpc.RpcResponse)3 ChannelBuffer (org.jboss.netty.buffer.ChannelBuffer)3 InetAddress (java.net.InetAddress)2 SocketAddress (java.net.SocketAddress)2 SecurityHandler (org.apache.hadoop.oncrpc.security.SecurityHandler)2 SysSecurityHandler (org.apache.hadoop.oncrpc.security.SysSecurityHandler)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 NfsExports (org.apache.hadoop.nfs.NfsExports)1 NFSPROC3 (org.apache.hadoop.nfs.nfs3.Nfs3Constant.NFSPROC3)1 NFS3Response (org.apache.hadoop.nfs.nfs3.response.NFS3Response)1 RpcAcceptedReply (org.apache.hadoop.oncrpc.RpcAcceptedReply)1 RpcCallCache (org.apache.hadoop.oncrpc.RpcCallCache)1 RpcDeniedReply (org.apache.hadoop.oncrpc.RpcDeniedReply)1 RpcInfo (org.apache.hadoop.oncrpc.RpcInfo)1 Credentials (org.apache.hadoop.oncrpc.security.Credentials)1