Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  xdr.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/* XDR types for nfsd. This is mainly a typing exercise. */

#ifndef LINUX_NFSD_H
#define LINUX_NFSD_H

#include <linux/vfs.h>
#include "nfsd.h"
#include "nfsfh.h"

struct nfsd_fhandle {
 struct svc_fh  fh;
};

struct nfsd_sattrargs {
 struct svc_fh  fh;
 struct iattr  attrs;
};

struct nfsd_diropargs {
 struct svc_fh  fh;
 char *   name;
 unsigned int  len;
};

struct nfsd_readargs {
 struct svc_fh  fh;
 __u32   offset;
 __u32   count;
};

struct nfsd_writeargs {
 svc_fh   fh;
 __u32   offset;
 __u32   len;
 struct xdr_buf  payload;
};

struct nfsd_createargs {
 struct svc_fh  fh;
 char *   name;
 unsigned int  len;
 struct iattr  attrs;
};

struct nfsd_renameargs {
 struct svc_fh  ffh;
 char *   fname;
 unsigned int  flen;
 struct svc_fh  tfh;
 char *   tname;
 unsigned int  tlen;
};

struct nfsd_linkargs {
 struct svc_fh  ffh;
 struct svc_fh  tfh;
 char *   tname;
 unsigned int  tlen;
};

struct nfsd_symlinkargs {
 struct svc_fh  ffh;
 char *   fname;
 unsigned int  flen;
 char *   tname;
 unsigned int  tlen;
 struct iattr  attrs;
 struct kvec  first;
};

struct nfsd_readdirargs {
 struct svc_fh  fh;
 __u32   cookie;
 __u32   count;
};

struct nfsd_stat {
 __be32   status;
};

struct nfsd_attrstat {
 __be32   status;
 struct svc_fh  fh;
 struct kstat  stat;
};

struct nfsd_diropres  {
 __be32   status;
 struct svc_fh  fh;
 struct kstat  stat;
};

struct nfsd_readlinkres {
 __be32   status;
 int   len;
 struct page  *page;
};

struct nfsd_readres {
 __be32   status;
 struct svc_fh  fh;
 unsigned long  count;
 struct kstat  stat;
 struct page  **pages;
};

struct nfsd_readdirres {
 /* Components of the reply */
 __be32   status;

 int   count;

 /* Used to encode the reply's entry list */
 struct xdr_stream xdr;
 struct xdr_buf  dirlist;
 struct readdir_cd common;
 unsigned int  cookie_offset;
};

struct nfsd_statfsres {
 __be32   status;
 struct kstatfs  stats;
};

/*
 * Storage requirements for XDR arguments and results.
 */

union nfsd_xdrstore {
 struct nfsd_sattrargs sattr;
 struct nfsd_diropargs dirop;
 struct nfsd_readargs read;
 struct nfsd_writeargs write;
 struct nfsd_createargs create;
 struct nfsd_renameargs rename;
 struct nfsd_linkargs link;
 struct nfsd_symlinkargs symlink;
 struct nfsd_readdirargs readdir;
};

#define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore)


bool nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_sattrargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_diropargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_readargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_writeargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_createargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_renameargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_linkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_decode_readdirargs(struct svc_rqst *rqstp, struct xdr_stream *xdr);

bool nfssvc_encode_statres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_encode_attrstatres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_encode_diropres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_encode_readlinkres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_encode_readres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_encode_statfsres(struct svc_rqst *rqstp, struct xdr_stream *xdr);
bool nfssvc_encode_readdirres(struct svc_rqst *rqstp, struct xdr_stream *xdr);

void nfssvc_encode_nfscookie(struct nfsd_readdirres *resp, u32 offset);
int nfssvc_encode_entry(void *data, const char *name, int namlen,
   loff_t offset, u64 ino, unsigned int d_type);

void nfssvc_release_attrstat(struct svc_rqst *rqstp);
void nfssvc_release_diropres(struct svc_rqst *rqstp);
void nfssvc_release_readres(struct svc_rqst *rqstp);

/* Helper functions for NFSv2 ACL code */
bool svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp);
bool svcxdr_encode_stat(struct xdr_stream *xdr, __be32 status);
bool svcxdr_encode_fattr(struct svc_rqst *rqstp, struct xdr_stream *xdr,
    const struct svc_fh *fhp, const struct kstat *stat);

#endif /* LINUX_NFSD_H */

Messung V0.5
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge