Lines Matching refs:server

16 static inline void assert_server_locked(struct ncp_server *server)  in assert_server_locked()  argument
18 if (server->lock == 0) { in assert_server_locked()
23 static void ncp_add_byte(struct ncp_server *server, __u8 x) in ncp_add_byte() argument
25 assert_server_locked(server); in ncp_add_byte()
26 *(__u8 *) (&(server->packet[server->current_size])) = x; in ncp_add_byte()
27 server->current_size += 1; in ncp_add_byte()
31 static void ncp_add_word(struct ncp_server *server, __le16 x) in ncp_add_word() argument
33 assert_server_locked(server); in ncp_add_word()
34 put_unaligned(x, (__le16 *) (&(server->packet[server->current_size]))); in ncp_add_word()
35 server->current_size += 2; in ncp_add_word()
39 static void ncp_add_be16(struct ncp_server *server, __u16 x) in ncp_add_be16() argument
41 assert_server_locked(server); in ncp_add_be16()
42 put_unaligned(cpu_to_be16(x), (__be16 *) (&(server->packet[server->current_size]))); in ncp_add_be16()
43 server->current_size += 2; in ncp_add_be16()
46 static void ncp_add_dword(struct ncp_server *server, __le32 x) in ncp_add_dword() argument
48 assert_server_locked(server); in ncp_add_dword()
49 put_unaligned(x, (__le32 *) (&(server->packet[server->current_size]))); in ncp_add_dword()
50 server->current_size += 4; in ncp_add_dword()
54 static void ncp_add_be32(struct ncp_server *server, __u32 x) in ncp_add_be32() argument
56 assert_server_locked(server); in ncp_add_be32()
57 put_unaligned(cpu_to_be32(x), (__be32 *)(&(server->packet[server->current_size]))); in ncp_add_be32()
58 server->current_size += 4; in ncp_add_be32()
61 static inline void ncp_add_dword_lh(struct ncp_server *server, __u32 x) { in ncp_add_dword_lh() argument
62 ncp_add_dword(server, cpu_to_le32(x)); in ncp_add_dword_lh()
65 static void ncp_add_mem(struct ncp_server *server, const void *source, int size) in ncp_add_mem() argument
67 assert_server_locked(server); in ncp_add_mem()
68 memcpy(&(server->packet[server->current_size]), source, size); in ncp_add_mem()
69 server->current_size += size; in ncp_add_mem()
73 static void ncp_add_pstring(struct ncp_server *server, const char *s) in ncp_add_pstring() argument
76 assert_server_locked(server); in ncp_add_pstring()
81 ncp_add_byte(server, len); in ncp_add_pstring()
82 ncp_add_mem(server, s, len); in ncp_add_pstring()
86 static inline void ncp_init_request(struct ncp_server *server) in ncp_init_request() argument
88 ncp_lock_server(server); in ncp_init_request()
90 server->current_size = sizeof(struct ncp_request_header); in ncp_init_request()
91 server->has_subfunction = 0; in ncp_init_request()
94 static inline void ncp_init_request_s(struct ncp_server *server, int subfunction) in ncp_init_request_s() argument
96 ncp_lock_server(server); in ncp_init_request_s()
98 server->current_size = sizeof(struct ncp_request_header) + 2; in ncp_init_request_s()
99 ncp_add_byte(server, subfunction); in ncp_init_request_s()
101 server->has_subfunction = 1; in ncp_init_request_s()
105 ncp_reply_data(struct ncp_server *server, int offset) in ncp_reply_data() argument
107 return &(server->packet[sizeof(struct ncp_reply_header) + offset]); in ncp_reply_data()
115 static u8 ncp_reply_byte(struct ncp_server *server, int offset) in ncp_reply_byte() argument
117 return *(const u8 *)ncp_reply_data(server, offset); in ncp_reply_byte()
126 ncp_reply_le16(struct ncp_server *server, int offset) in ncp_reply_le16() argument
128 return get_unaligned_le16(ncp_reply_data(server, offset)); in ncp_reply_le16()
132 ncp_reply_be16(struct ncp_server *server, int offset) in ncp_reply_be16() argument
134 return get_unaligned_be16(ncp_reply_data(server, offset)); in ncp_reply_be16()
143 ncp_reply_dword(struct ncp_server *server, int offset) in ncp_reply_dword() argument
145 return get_unaligned((__le32 *)ncp_reply_data(server, offset)); in ncp_reply_dword()
148 static inline __u32 ncp_reply_dword_lh(struct ncp_server* server, int offset) { in ncp_reply_dword_lh() argument
149 return le32_to_cpu(ncp_reply_dword(server, offset)); in ncp_reply_dword_lh()
153 ncp_negotiate_buffersize(struct ncp_server *server, int size, int *target) in ncp_negotiate_buffersize() argument
157 ncp_init_request(server); in ncp_negotiate_buffersize()
158 ncp_add_be16(server, size); in ncp_negotiate_buffersize()
160 if ((result = ncp_request(server, 33)) != 0) { in ncp_negotiate_buffersize()
161 ncp_unlock_server(server); in ncp_negotiate_buffersize()
164 *target = min_t(unsigned int, ncp_reply_be16(server, 0), size); in ncp_negotiate_buffersize()
166 ncp_unlock_server(server); in ncp_negotiate_buffersize()
176 ncp_negotiate_size_and_options(struct ncp_server *server, in ncp_negotiate_size_and_options() argument
183 ncp_init_request(server); in ncp_negotiate_size_and_options()
184 ncp_add_be16(server, size); in ncp_negotiate_size_and_options()
185 ncp_add_byte(server, options); in ncp_negotiate_size_and_options()
187 if ((result = ncp_request(server, 0x61)) != 0) in ncp_negotiate_size_and_options()
189 ncp_unlock_server(server); in ncp_negotiate_size_and_options()
194 result = ncp_reply_be16(server, 0); in ncp_negotiate_size_and_options()
198 *ret_options = ncp_reply_byte(server, 4); in ncp_negotiate_size_and_options()
200 ncp_unlock_server(server); in ncp_negotiate_size_and_options()
204 int ncp_get_volume_info_with_number(struct ncp_server* server, in ncp_get_volume_info_with_number() argument
209 ncp_init_request_s(server, 44); in ncp_get_volume_info_with_number()
210 ncp_add_byte(server, n); in ncp_get_volume_info_with_number()
212 if ((result = ncp_request(server, 22)) != 0) { in ncp_get_volume_info_with_number()
215 target->total_blocks = ncp_reply_dword_lh(server, 0); in ncp_get_volume_info_with_number()
216 target->free_blocks = ncp_reply_dword_lh(server, 4); in ncp_get_volume_info_with_number()
217 target->purgeable_blocks = ncp_reply_dword_lh(server, 8); in ncp_get_volume_info_with_number()
218 target->not_yet_purgeable_blocks = ncp_reply_dword_lh(server, 12); in ncp_get_volume_info_with_number()
219 target->total_dir_entries = ncp_reply_dword_lh(server, 16); in ncp_get_volume_info_with_number()
220 target->available_dir_entries = ncp_reply_dword_lh(server, 20); in ncp_get_volume_info_with_number()
221 target->sectors_per_block = ncp_reply_byte(server, 28); in ncp_get_volume_info_with_number()
226 len = ncp_reply_byte(server, 29); in ncp_get_volume_info_with_number()
231 memcpy(&(target->volume_name), ncp_reply_data(server, 30), len); in ncp_get_volume_info_with_number()
234 ncp_unlock_server(server); in ncp_get_volume_info_with_number()
238 int ncp_get_directory_info(struct ncp_server* server, __u8 n, in ncp_get_directory_info() argument
243 ncp_init_request_s(server, 45); in ncp_get_directory_info()
244 ncp_add_byte(server, n); in ncp_get_directory_info()
246 if ((result = ncp_request(server, 22)) != 0) { in ncp_get_directory_info()
249 target->total_blocks = ncp_reply_dword_lh(server, 0); in ncp_get_directory_info()
250 target->free_blocks = ncp_reply_dword_lh(server, 4); in ncp_get_directory_info()
253 target->total_dir_entries = ncp_reply_dword_lh(server, 8); in ncp_get_directory_info()
254 target->available_dir_entries = ncp_reply_dword_lh(server, 12); in ncp_get_directory_info()
255 target->sectors_per_block = ncp_reply_byte(server, 20); in ncp_get_directory_info()
260 len = ncp_reply_byte(server, 21); in ncp_get_directory_info()
265 memcpy(&(target->volume_name), ncp_reply_data(server, 22), len); in ncp_get_directory_info()
268 ncp_unlock_server(server); in ncp_get_directory_info()
273 ncp_close_file(struct ncp_server *server, const char *file_id) in ncp_close_file() argument
277 ncp_init_request(server); in ncp_close_file()
278 ncp_add_byte(server, 0); in ncp_close_file()
279 ncp_add_mem(server, file_id, 6); in ncp_close_file()
281 result = ncp_request(server, 66); in ncp_close_file()
282 ncp_unlock_server(server); in ncp_close_file()
306 static void ncp_add_handle_path(struct ncp_server *server, __u8 vol_num, in ncp_add_handle_path() argument
310 ncp_add_byte(server, vol_num); in ncp_add_handle_path()
311 ncp_add_dword(server, dir_base); in ncp_add_handle_path()
313 ncp_add_byte(server, 1); /* dir_base */ in ncp_add_handle_path()
315 ncp_add_byte(server, 0xff); /* no handle */ in ncp_add_handle_path()
318 ncp_add_byte(server, 1); /* 1 component */ in ncp_add_handle_path()
319 ncp_add_pstring(server, path); in ncp_add_handle_path()
321 ncp_add_byte(server, 0); in ncp_add_handle_path()
325 int ncp_dirhandle_alloc(struct ncp_server* server, __u8 volnum, __le32 dirent, in ncp_dirhandle_alloc() argument
329 ncp_init_request(server); in ncp_dirhandle_alloc()
330 ncp_add_byte(server, 12); /* subfunction */ in ncp_dirhandle_alloc()
331 ncp_add_byte(server, NW_NS_DOS); in ncp_dirhandle_alloc()
332 ncp_add_byte(server, 0); in ncp_dirhandle_alloc()
333 ncp_add_word(server, 0); in ncp_dirhandle_alloc()
334 ncp_add_handle_path(server, volnum, dirent, 1, NULL); in ncp_dirhandle_alloc()
335 if ((result = ncp_request(server, 87)) == 0) { in ncp_dirhandle_alloc()
336 *dirhandle = ncp_reply_byte(server, 0); in ncp_dirhandle_alloc()
338 ncp_unlock_server(server); in ncp_dirhandle_alloc()
342 int ncp_dirhandle_free(struct ncp_server* server, __u8 dirhandle) { in ncp_dirhandle_free() argument
345 ncp_init_request_s(server, 20); in ncp_dirhandle_free()
346 ncp_add_byte(server, dirhandle); in ncp_dirhandle_free()
347 result = ncp_request(server, 22); in ncp_dirhandle_free()
348 ncp_unlock_server(server); in ncp_dirhandle_free()
375 int ncp_obtain_nfs_info(struct ncp_server *server, in ncp_obtain_nfs_info() argument
383 if (ncp_is_nfs_extras(server, volnum)) { in ncp_obtain_nfs_info()
384 ncp_init_request(server); in ncp_obtain_nfs_info()
385 ncp_add_byte(server, 19); /* subfunction */ in ncp_obtain_nfs_info()
386 ncp_add_byte(server, server->name_space[volnum]); in ncp_obtain_nfs_info()
387 ncp_add_byte(server, NW_NS_NFS); in ncp_obtain_nfs_info()
388 ncp_add_byte(server, 0); in ncp_obtain_nfs_info()
389 ncp_add_byte(server, volnum); in ncp_obtain_nfs_info()
390 ncp_add_dword(server, target->dirEntNum); in ncp_obtain_nfs_info()
393 ncp_add_dword_lh(server, NSIBM_NFS_MODE | NSIBM_NFS_NLINKS | NSIBM_NFS_RDEV); in ncp_obtain_nfs_info()
395 if ((result = ncp_request(server, 87)) == 0) { in ncp_obtain_nfs_info()
396 ncp_extract_nfs_info(ncp_reply_data(server, 0), &target->nfs); in ncp_obtain_nfs_info()
404 ncp_unlock_server(server); in ncp_obtain_nfs_info()
419 int ncp_obtain_info(struct ncp_server *server, struct inode *dir, const char *path, in ncp_obtain_info() argument
430 ncp_init_request(server); in ncp_obtain_info()
431 ncp_add_byte(server, 6); /* subfunction */ in ncp_obtain_info()
432 ncp_add_byte(server, server->name_space[volnum]); in ncp_obtain_info()
433 ncp_add_byte(server, server->name_space[volnum]); /* N.B. twice ?? */ in ncp_obtain_info()
434 ncp_add_word(server, cpu_to_le16(0x8006)); /* get all */ in ncp_obtain_info()
435 ncp_add_dword(server, RIM_ALL); in ncp_obtain_info()
436 ncp_add_handle_path(server, volnum, dirent, 1, path); in ncp_obtain_info()
438 if ((result = ncp_request(server, 87)) != 0) in ncp_obtain_info()
440 ncp_extract_file_info(ncp_reply_data(server, 0), target); in ncp_obtain_info()
441 ncp_unlock_server(server); in ncp_obtain_info()
443 result = ncp_obtain_nfs_info(server, target); in ncp_obtain_info()
447 ncp_unlock_server(server); in ncp_obtain_info()
453 ncp_obtain_DOS_dir_base(struct ncp_server *server, in ncp_obtain_DOS_dir_base() argument
460 ncp_init_request(server); in ncp_obtain_DOS_dir_base()
461 ncp_add_byte(server, 6); /* subfunction */ in ncp_obtain_DOS_dir_base()
462 ncp_add_byte(server, ns); in ncp_obtain_DOS_dir_base()
463 ncp_add_byte(server, ns); in ncp_obtain_DOS_dir_base()
464 ncp_add_word(server, cpu_to_le16(0x8006)); /* get all */ in ncp_obtain_DOS_dir_base()
465 ncp_add_dword(server, RIM_DIRECTORY); in ncp_obtain_DOS_dir_base()
466 ncp_add_handle_path(server, volnum, dirent, 1, path); in ncp_obtain_DOS_dir_base()
468 if ((result = ncp_request(server, 87)) == 0) in ncp_obtain_DOS_dir_base()
470 if (DOS_dir_base) *DOS_dir_base=ncp_reply_dword(server, 0x34); in ncp_obtain_DOS_dir_base()
472 ncp_unlock_server(server); in ncp_obtain_DOS_dir_base()
478 ncp_get_known_namespace(struct ncp_server *server, __u8 volume) in ncp_get_known_namespace() argument
485 ncp_init_request(server); in ncp_get_known_namespace()
486 ncp_add_byte(server, 24); /* Subfunction: Get Name Spaces Loaded */ in ncp_get_known_namespace()
487 ncp_add_word(server, 0); in ncp_get_known_namespace()
488 ncp_add_byte(server, volume); in ncp_get_known_namespace()
490 if ((result = ncp_request(server, 87)) != 0) { in ncp_get_known_namespace()
491 ncp_unlock_server(server); in ncp_get_known_namespace()
496 no_namespaces = ncp_reply_le16(server, 0); in ncp_get_known_namespace()
497 namespace = ncp_reply_data(server, 2); in ncp_get_known_namespace()
503 if ((*namespace == NW_NS_NFS) && !(server->m.flags&NCP_MOUNT_NO_NFS)) in ncp_get_known_namespace()
510 if ((*namespace == NW_NS_OS2) && !(server->m.flags&NCP_MOUNT_NO_OS2)) in ncp_get_known_namespace()
518 ncp_unlock_server(server); in ncp_get_known_namespace()
526 ncp_update_known_namespace(struct ncp_server *server, __u8 volume, int *ret_ns) in ncp_update_known_namespace() argument
528 int ns = ncp_get_known_namespace(server, volume); in ncp_update_known_namespace()
533 ncp_dbg(1, "namespace[%d] = %d\n", volume, server->name_space[volume]); in ncp_update_known_namespace()
535 if (server->name_space[volume] == ns) in ncp_update_known_namespace()
537 server->name_space[volume] = ns; in ncp_update_known_namespace()
542 ncp_ObtainSpecificDirBase(struct ncp_server *server, in ncp_ObtainSpecificDirBase() argument
549 ncp_init_request(server); in ncp_ObtainSpecificDirBase()
550 ncp_add_byte(server, 6); /* subfunction */ in ncp_ObtainSpecificDirBase()
551 ncp_add_byte(server, nsSrc); in ncp_ObtainSpecificDirBase()
552 ncp_add_byte(server, nsDst); in ncp_ObtainSpecificDirBase()
553 ncp_add_word(server, cpu_to_le16(0x8006)); /* get all */ in ncp_ObtainSpecificDirBase()
554 ncp_add_dword(server, RIM_ALL); in ncp_ObtainSpecificDirBase()
555 ncp_add_handle_path(server, vol_num, dir_base, 1, path); in ncp_ObtainSpecificDirBase()
557 if ((result = ncp_request(server, 87)) != 0) in ncp_ObtainSpecificDirBase()
559 ncp_unlock_server(server); in ncp_ObtainSpecificDirBase()
564 *dirEntNum = ncp_reply_dword(server, 0x30); in ncp_ObtainSpecificDirBase()
566 *DosDirNum = ncp_reply_dword(server, 0x34); in ncp_ObtainSpecificDirBase()
567 ncp_unlock_server(server); in ncp_ObtainSpecificDirBase()
572 ncp_mount_subdir(struct ncp_server *server, in ncp_mount_subdir() argument
579 ncp_update_known_namespace(server, volNumber, &dstNS); in ncp_mount_subdir()
580 if ((result = ncp_ObtainSpecificDirBase(server, srcNS, dstNS, volNumber, in ncp_mount_subdir()
586 server->m.mounted_vol[1] = 0; in ncp_mount_subdir()
587 server->m.mounted_vol[0] = 'X'; in ncp_mount_subdir()
592 ncp_get_volume_root(struct ncp_server *server, in ncp_get_volume_root() argument
599 ncp_init_request(server); in ncp_get_volume_root()
600 ncp_add_byte(server, 22); /* Subfunction: Generate dir handle */ in ncp_get_volume_root()
601 ncp_add_byte(server, 0); /* DOS namespace */ in ncp_get_volume_root()
602 ncp_add_byte(server, 0); /* reserved */ in ncp_get_volume_root()
603 ncp_add_byte(server, 0); /* reserved */ in ncp_get_volume_root()
604 ncp_add_byte(server, 0); /* reserved */ in ncp_get_volume_root()
606 ncp_add_byte(server, 0); /* faked volume number */ in ncp_get_volume_root()
607 ncp_add_dword(server, 0); /* faked dir_base */ in ncp_get_volume_root()
608 ncp_add_byte(server, 0xff); /* Don't have a dir_base */ in ncp_get_volume_root()
609 ncp_add_byte(server, 1); /* 1 path component */ in ncp_get_volume_root()
610 ncp_add_pstring(server, volname); in ncp_get_volume_root()
612 if ((result = ncp_request(server, 87)) != 0) { in ncp_get_volume_root()
613 ncp_unlock_server(server); in ncp_get_volume_root()
616 *dirent = *dosdirent = ncp_reply_dword(server, 4); in ncp_get_volume_root()
617 *volume = ncp_reply_byte(server, 8); in ncp_get_volume_root()
618 ncp_unlock_server(server); in ncp_get_volume_root()
623 ncp_lookup_volume(struct ncp_server *server, in ncp_lookup_volume() argument
629 result = ncp_get_volume_root(server, volname, in ncp_lookup_volume()
634 ncp_update_known_namespace(server, target->volNumber, NULL); in ncp_lookup_volume()
645 int ncp_modify_file_or_subdir_dos_info_path(struct ncp_server *server, in ncp_modify_file_or_subdir_dos_info_path() argument
655 ncp_init_request(server); in ncp_modify_file_or_subdir_dos_info_path()
656 ncp_add_byte(server, 7); /* subfunction */ in ncp_modify_file_or_subdir_dos_info_path()
657 ncp_add_byte(server, server->name_space[volnum]); in ncp_modify_file_or_subdir_dos_info_path()
658 ncp_add_byte(server, 0); /* reserved */ in ncp_modify_file_or_subdir_dos_info_path()
659 ncp_add_word(server, cpu_to_le16(0x8006)); /* search attribs: all */ in ncp_modify_file_or_subdir_dos_info_path()
661 ncp_add_dword(server, info_mask); in ncp_modify_file_or_subdir_dos_info_path()
662 ncp_add_mem(server, info, sizeof(*info)); in ncp_modify_file_or_subdir_dos_info_path()
663 ncp_add_handle_path(server, volnum, dirent, 1, path); in ncp_modify_file_or_subdir_dos_info_path()
665 result = ncp_request(server, 87); in ncp_modify_file_or_subdir_dos_info_path()
666 ncp_unlock_server(server); in ncp_modify_file_or_subdir_dos_info_path()
670 int ncp_modify_file_or_subdir_dos_info(struct ncp_server *server, in ncp_modify_file_or_subdir_dos_info() argument
675 return ncp_modify_file_or_subdir_dos_info_path(server, dir, NULL, in ncp_modify_file_or_subdir_dos_info()
680 int ncp_modify_nfs_info(struct ncp_server *server, __u8 volnum, __le32 dirent, in ncp_modify_nfs_info() argument
686 ncp_init_request(server); in ncp_modify_nfs_info()
687 if (server->name_space[volnum] == NW_NS_NFS) { in ncp_modify_nfs_info()
688 ncp_add_byte(server, 25); /* subfunction */ in ncp_modify_nfs_info()
689 ncp_add_byte(server, server->name_space[volnum]); in ncp_modify_nfs_info()
690 ncp_add_byte(server, NW_NS_NFS); in ncp_modify_nfs_info()
691 ncp_add_byte(server, volnum); in ncp_modify_nfs_info()
692 ncp_add_dword(server, dirent); in ncp_modify_nfs_info()
695 ncp_add_dword_lh(server, NSIBM_NFS_MODE | NSIBM_NFS_NLINKS | NSIBM_NFS_RDEV); in ncp_modify_nfs_info()
696 ncp_add_dword_lh(server, mode); in ncp_modify_nfs_info()
697 ncp_add_dword_lh(server, 1); /* nlinks */ in ncp_modify_nfs_info()
698 ncp_add_dword_lh(server, rdev); in ncp_modify_nfs_info()
699 result = ncp_request(server, 87); in ncp_modify_nfs_info()
701 ncp_unlock_server(server); in ncp_modify_nfs_info()
708 ncp_DeleteNSEntry(struct ncp_server *server, in ncp_DeleteNSEntry() argument
714 ncp_init_request(server); in ncp_DeleteNSEntry()
715 ncp_add_byte(server, 8); /* subfunction */ in ncp_DeleteNSEntry()
716 ncp_add_byte(server, ns); in ncp_DeleteNSEntry()
717 ncp_add_byte(server, 0); /* reserved */ in ncp_DeleteNSEntry()
718 ncp_add_word(server, attr); /* search attribs: all */ in ncp_DeleteNSEntry()
719 ncp_add_handle_path(server, volnum, dirent, have_dir_base, name); in ncp_DeleteNSEntry()
721 result = ncp_request(server, 87); in ncp_DeleteNSEntry()
722 ncp_unlock_server(server); in ncp_DeleteNSEntry()
727 ncp_del_file_or_subdir2(struct ncp_server *server, in ncp_del_file_or_subdir2() argument
739 return ncp_DeleteNSEntry(server, 1, volnum, dirent, NULL, NW_NS_DOS, cpu_to_le16(0x8006)); in ncp_del_file_or_subdir2()
743 ncp_del_file_or_subdir(struct ncp_server *server, in ncp_del_file_or_subdir() argument
750 name_space = server->name_space[volnum]; in ncp_del_file_or_subdir()
756 result=ncp_obtain_DOS_dir_base(server, name_space, volnum, dirent, name, &dirent); in ncp_del_file_or_subdir()
762 return ncp_DeleteNSEntry(server, 1, volnum, dirent, name, name_space, cpu_to_le16(0x8006)); in ncp_del_file_or_subdir()
776 int ncp_open_create_file_or_subdir(struct ncp_server *server, in ncp_open_create_file_or_subdir() argument
794 ncp_init_request(server); in ncp_open_create_file_or_subdir()
795 ncp_add_byte(server, 1); /* subfunction */ in ncp_open_create_file_or_subdir()
796 ncp_add_byte(server, server->name_space[volnum]); in ncp_open_create_file_or_subdir()
797 ncp_add_byte(server, open_create_mode); in ncp_open_create_file_or_subdir()
798 ncp_add_word(server, search_attribs); in ncp_open_create_file_or_subdir()
799 ncp_add_dword(server, RIM_ALL); in ncp_open_create_file_or_subdir()
800 ncp_add_dword(server, create_attributes); in ncp_open_create_file_or_subdir()
803 ncp_add_word(server, desired_acc_rights); in ncp_open_create_file_or_subdir()
804 ncp_add_handle_path(server, volnum, dirent, 1, name); in ncp_open_create_file_or_subdir()
806 if ((result = ncp_request(server, 87)) != 0) in ncp_open_create_file_or_subdir()
812 ncp_extract_file_info(ncp_reply_data(server, 6), &(target->i)); in ncp_open_create_file_or_subdir()
814 ConvertToNWfromDWORD(ncp_reply_le16(server, 0), in ncp_open_create_file_or_subdir()
815 ncp_reply_le16(server, 2), in ncp_open_create_file_or_subdir()
818 ncp_unlock_server(server); in ncp_open_create_file_or_subdir()
820 (void)ncp_obtain_nfs_info(server, &(target->i)); in ncp_open_create_file_or_subdir()
824 ncp_unlock_server(server); in ncp_open_create_file_or_subdir()
829 ncp_initialize_search(struct ncp_server *server, struct inode *dir, in ncp_initialize_search() argument
836 ncp_init_request(server); in ncp_initialize_search()
837 ncp_add_byte(server, 2); /* subfunction */ in ncp_initialize_search()
838 ncp_add_byte(server, server->name_space[volnum]); in ncp_initialize_search()
839 ncp_add_byte(server, 0); /* reserved */ in ncp_initialize_search()
840 ncp_add_handle_path(server, volnum, dirent, 1, NULL); in ncp_initialize_search()
842 result = ncp_request(server, 87); in ncp_initialize_search()
845 memcpy(target, ncp_reply_data(server, 0), sizeof(*target)); in ncp_initialize_search()
848 ncp_unlock_server(server); in ncp_initialize_search()
852 int ncp_search_for_fileset(struct ncp_server *server, in ncp_search_for_fileset() argument
863 ncp_init_request(server); in ncp_search_for_fileset()
864 ncp_add_byte(server, 20); in ncp_search_for_fileset()
865 ncp_add_byte(server, server->name_space[seq->volNumber]); in ncp_search_for_fileset()
866 ncp_add_byte(server, 0); /* datastream */ in ncp_search_for_fileset()
867 ncp_add_word(server, cpu_to_le16(0x8006)); in ncp_search_for_fileset()
868 ncp_add_dword(server, RIM_ALL); in ncp_search_for_fileset()
869 ncp_add_word(server, cpu_to_le16(32767)); /* max returned items */ in ncp_search_for_fileset()
870 ncp_add_mem(server, seq, 9); in ncp_search_for_fileset()
872 if (server->name_space[seq->volNumber] == NW_NS_NFS) { in ncp_search_for_fileset()
873 ncp_add_byte(server, 0); /* 0 byte pattern */ in ncp_search_for_fileset()
877 ncp_add_byte(server, 2); /* 2 byte pattern */ in ncp_search_for_fileset()
878 ncp_add_byte(server, 0xff); /* following is a wildcard */ in ncp_search_for_fileset()
879 ncp_add_byte(server, '*'); in ncp_search_for_fileset()
881 result = ncp_request2(server, 87, buffer, bufsize); in ncp_search_for_fileset()
883 ncp_unlock_server(server); in ncp_search_for_fileset()
886 if (server->ncp_reply_size < 12) { in ncp_search_for_fileset()
887 ncp_unlock_server(server); in ncp_search_for_fileset()
890 *rsize = server->ncp_reply_size - 12; in ncp_search_for_fileset()
891 ncp_unlock_server(server); in ncp_search_for_fileset()
901 ncp_RenameNSEntry(struct ncp_server *server, in ncp_RenameNSEntry() argument
911 ncp_init_request(server); in ncp_RenameNSEntry()
912 ncp_add_byte(server, 4); /* subfunction */ in ncp_RenameNSEntry()
913 ncp_add_byte(server, server->name_space[NCP_FINFO(old_dir)->volNumber]); in ncp_RenameNSEntry()
914 ncp_add_byte(server, 1); /* rename flag */ in ncp_RenameNSEntry()
915 ncp_add_word(server, old_type); /* search attributes */ in ncp_RenameNSEntry()
918 ncp_add_byte(server, NCP_FINFO(old_dir)->volNumber); in ncp_RenameNSEntry()
919 ncp_add_dword(server, NCP_FINFO(old_dir)->dirEntNum); in ncp_RenameNSEntry()
920 ncp_add_byte(server, 1); in ncp_RenameNSEntry()
921 ncp_add_byte(server, 1); /* 1 source component */ in ncp_RenameNSEntry()
924 ncp_add_byte(server, NCP_FINFO(new_dir)->volNumber); in ncp_RenameNSEntry()
925 ncp_add_dword(server, NCP_FINFO(new_dir)->dirEntNum); in ncp_RenameNSEntry()
926 ncp_add_byte(server, 1); in ncp_RenameNSEntry()
927 ncp_add_byte(server, 1); /* 1 destination component */ in ncp_RenameNSEntry()
930 ncp_add_pstring(server, old_name); in ncp_RenameNSEntry()
932 ncp_add_pstring(server, new_name); in ncp_RenameNSEntry()
934 result = ncp_request(server, 87); in ncp_RenameNSEntry()
935 ncp_unlock_server(server); in ncp_RenameNSEntry()
940 int ncp_ren_or_mov_file_or_subdir(struct ncp_server *server, in ncp_ren_or_mov_file_or_subdir() argument
948 result = ncp_RenameNSEntry(server, old_dir, old_name, old_type, in ncp_ren_or_mov_file_or_subdir()
953 result = ncp_RenameNSEntry(server, old_dir, old_name, old_type, in ncp_ren_or_mov_file_or_subdir()
957 result = ncp_del_file_or_subdir(server, new_dir, new_name); in ncp_ren_or_mov_file_or_subdir()
959 result = ncp_RenameNSEntry(server, old_dir, old_name, old_type, in ncp_ren_or_mov_file_or_subdir()
967 ncp_read_kernel(struct ncp_server *server, const char *file_id, in ncp_read_kernel() argument
973 ncp_init_request(server); in ncp_read_kernel()
974 ncp_add_byte(server, 0); in ncp_read_kernel()
975 ncp_add_mem(server, file_id, 6); in ncp_read_kernel()
976 ncp_add_be32(server, offset); in ncp_read_kernel()
977 ncp_add_be16(server, to_read); in ncp_read_kernel()
979 if ((result = ncp_request(server, 72)) != 0) { in ncp_read_kernel()
982 *bytes_read = ncp_reply_be16(server, 0); in ncp_read_kernel()
983 source = ncp_reply_data(server, 2 + (offset & 1)); in ncp_read_kernel()
987 ncp_unlock_server(server); in ncp_read_kernel()
1003 ncp_read_bounce(struct ncp_server *server, const char *file_id, in ncp_read_bounce() argument
1009 ncp_init_request(server); in ncp_read_bounce()
1010 ncp_add_byte(server, 0); in ncp_read_bounce()
1011 ncp_add_mem(server, file_id, 6); in ncp_read_bounce()
1012 ncp_add_be32(server, offset); in ncp_read_bounce()
1013 ncp_add_be16(server, to_read); in ncp_read_bounce()
1014 result = ncp_request2(server, 72, bounce, bufsize); in ncp_read_bounce()
1015 ncp_unlock_server(server); in ncp_read_bounce()
1036 ncp_write_kernel(struct ncp_server *server, const char *file_id, in ncp_write_kernel() argument
1042 ncp_init_request(server); in ncp_write_kernel()
1043 ncp_add_byte(server, 0); in ncp_write_kernel()
1044 ncp_add_mem(server, file_id, 6); in ncp_write_kernel()
1045 ncp_add_be32(server, offset); in ncp_write_kernel()
1046 ncp_add_be16(server, to_write); in ncp_write_kernel()
1047 ncp_add_mem(server, source, to_write); in ncp_write_kernel()
1049 if ((result = ncp_request(server, 73)) == 0) in ncp_write_kernel()
1051 ncp_unlock_server(server); in ncp_write_kernel()
1057 ncp_LogPhysicalRecord(struct ncp_server *server, const char *file_id, in ncp_LogPhysicalRecord() argument
1062 ncp_init_request(server); in ncp_LogPhysicalRecord()
1063 ncp_add_byte(server, locktype); in ncp_LogPhysicalRecord()
1064 ncp_add_mem(server, file_id, 6); in ncp_LogPhysicalRecord()
1065 ncp_add_be32(server, offset); in ncp_LogPhysicalRecord()
1066 ncp_add_be32(server, length); in ncp_LogPhysicalRecord()
1067 ncp_add_be16(server, timeout); in ncp_LogPhysicalRecord()
1069 if ((result = ncp_request(server, 0x1A)) != 0) in ncp_LogPhysicalRecord()
1071 ncp_unlock_server(server); in ncp_LogPhysicalRecord()
1074 ncp_unlock_server(server); in ncp_LogPhysicalRecord()
1079 ncp_ClearPhysicalRecord(struct ncp_server *server, const char *file_id, in ncp_ClearPhysicalRecord() argument
1084 ncp_init_request(server); in ncp_ClearPhysicalRecord()
1085 ncp_add_byte(server, 0); /* who knows... lanalyzer says that */ in ncp_ClearPhysicalRecord()
1086 ncp_add_mem(server, file_id, 6); in ncp_ClearPhysicalRecord()
1087 ncp_add_be32(server, offset); in ncp_ClearPhysicalRecord()
1088 ncp_add_be32(server, length); in ncp_ClearPhysicalRecord()
1090 if ((result = ncp_request(server, 0x1E)) != 0) in ncp_ClearPhysicalRecord()
1092 ncp_unlock_server(server); in ncp_ClearPhysicalRecord()
1095 ncp_unlock_server(server); in ncp_ClearPhysicalRecord()
1106 ncp__io2vol(struct ncp_server *server, unsigned char *vname, unsigned int *vlen, in ncp__io2vol() argument
1109 struct nls_table *in = server->nls_io; in ncp__io2vol()
1110 struct nls_table *out = server->nls_vol; in ncp__io2vol()
1123 if (NCP_IS_FLAG(server, NCP_FLAG_UTF8)) { in ncp__io2vol()
1184 ncp__vol2io(struct ncp_server *server, unsigned char *iname, unsigned int *ilen, in ncp__vol2io() argument
1187 struct nls_table *in = server->nls_vol; in ncp__vol2io()
1188 struct nls_table *out = server->nls_io; in ncp__vol2io()
1225 if (NCP_IS_FLAG(server, NCP_FLAG_UTF8)) { in ncp__vol2io()