Ejemplo n.º 1
0
Boolean ssh_interceptor_proc_init(SshInterceptor interceptor)
{
  char name[128];

  /* Create a directory under /proc/ */
  snprintf(name, sizeof(name), "%s%s", SSH_PROC_ROOT, ssh_device_suffix);

  interceptor->proc_dir = create_proc_entry(name, S_IFDIR, NULL);
  
  if (interceptor->proc_dir == NULL)
    goto error;

  if (interceptor_ipm_proc_entry_init(interceptor) == FALSE)
    goto error;

  if (interceptor_version_proc_entry_init(interceptor) == FALSE)
    goto error;

  return TRUE;

 error:
  SSH_DEBUG(SSH_D_ERROR, ("Could not create /proc/%s", name));

  interceptor_ipm_proc_entry_uninit(interceptor);
  interceptor_version_proc_entry_uninit(interceptor);

  if (interceptor->proc_dir)
    remove_proc_entry(interceptor->proc_dir->name, NULL);
  interceptor->proc_dir = NULL;

  return FALSE;
}
Ejemplo n.º 2
0
Boolean ssh_interceptor_proc_init(SshInterceptor interceptor)
{
  char name[128];

  /* Softirqs are always enabled here. */
  SSH_ASSERT(!in_softirq());

  /* Create a directory under /proc/ */
  ssh_snprintf(name, sizeof(name), "%s%s", SSH_PROC_ROOT, ssh_device_suffix);
  interceptor->proc_dir = create_proc_entry(name, S_IFDIR, NULL);
  
  if (interceptor->proc_dir == NULL)
    goto error;

  if (interceptor_ipm_proc_entry_init(interceptor) == FALSE)
    goto error;

#ifdef DEBUG_LIGHT
  if (interceptor_stats_proc_entry_init(interceptor) == FALSE)
    goto error;

  if (interceptor_debug_proc_entry_init(interceptor) == FALSE)
    goto error;
#endif /* DEBUG_LIGHT */

  if (interceptor_version_proc_entry_init(interceptor) == FALSE)
    goto error;

  return TRUE;

 error:
  SSH_DEBUG(SSH_D_ERROR, ("Could not create /proc/%s", name));

  interceptor_ipm_proc_entry_uninit(interceptor);
#ifdef DEBUG_LIGHT
  interceptor_stats_proc_entry_uninit(interceptor);
  interceptor_debug_proc_entry_uninit(interceptor);
#endif /* DEBUG_LIGHT */
  interceptor_version_proc_entry_uninit(interceptor);

  if (interceptor->proc_dir)
    remove_proc_entry(interceptor->proc_dir->name, NULL);
  interceptor->proc_dir = NULL;

  return FALSE;
}